swift 如何使我的控件的所有字体大小相同?

4ioopgfo  于 12个月前  发布在  Swift
关注(0)|答案(1)|浏览(98)

我正在用SwiftUI创建一个应用程序。在一个视图中,我有一个文本编辑器,选择器和步进器。我希望字体是一样的。这一方法:

let defaultTextSize: CGFloat = 20

Text("test")
 .font(.system(size: defaultTextSize))

TextEditor(text: $t)
.font(.system(size: defaultTextSize))

Stepper("\(selectedLevel)", value $selectedLevel, in: 1...7)
.font(.system(size: defaultTextSize))

//This does not work:

Picker("", selection: $selectedRarity){
                    ForEach(rarities, id: \.self) {rarity in Text(rarity.rawValue).tag(rarity)
                            .font(.system(size: defaultTextSize)) }
                    .frame(width: 70)
                    .font(.system(size: defaultTextSize))

选择器内文本的字体大小不会改变,无论我是否使用.system(size:或.font(.title)等。
有什么想法吗?即使是ChatGPT也不知道:(

zu0ti5jz

zu0ti5jz1#

不幸的是,Apple的原生UI组件通常不能完全定制,但通常有一些UIKit解决方案可以在init()中实现。
View结构体中,您可以将以下内容放入init()

// Change the font size to built-in `TextStyle` types or your own types
//
// You can replace .highlighted with other types of text for the picker

UISegmentedControl.appearance().setTitleTextAttributes(
    [.font : UIFont.preferredFont(forTextStyle: .title)],
     for: .highlighted
)

对于更多的选择器自定义或更高级的条件自定义,click here
如果你想要更多的定制,你可能会想要创建自己的自定义选择器,这并不难实现:)

相关问题