swift - 如何在 SwiftUI 中使用 SF Pro Rounded 或自定义字体作为导航标题?

标签 swift swiftui

我正在尝试将导航 View 标题的字体更改为系统圆角字体,但我似乎找不到办法。

要清楚,我可以在任何 TextView 、列表等上很好地更改字体,但在导航标题上这似乎是不可能的。

作为引用,Carrot Weather 应用程序中的标题(“设置”)实现了这一点:enter image description here

有什么想法吗?

谢谢!!!

最佳答案

您可以使用 largeTitle获取默认导航栏字体,然后使用 withDesign(_:) 应用舍入.

struct ContentView: View {
    init() {
        var titleFont = UIFont.preferredFont(forTextStyle: .largeTitle) /// the default large title font
        titleFont = UIFont(
            descriptor:
                titleFont.fontDescriptor
                .withDesign(.rounded)? /// make rounded
                .withSymbolicTraits(.traitBold) /// make bold
                ??
                titleFont.fontDescriptor, /// return the normal title if customization failed
            size: titleFont.pointSize
        )
        
        /// set the rounded font
        UINavigationBar.appearance().largeTitleTextAttributes = [.font: titleFont]
    }
    var body: some View {
        NavigationView {
            Text("Hello World!")
                .navigationTitle("Dashboard") /// use this for iOS 14+
        }
    }
}

结果:

Rounded navigation bar title

关于swift - 如何在 SwiftUI 中使用 SF Pro Rounded 或自定义字体作为导航标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68416796/

相关文章:

swift - 如何显示 ASNetworkImageNode 的事件指示器?

iOS swift 4 为复杂的静态变量设置默认 bool 值?

swift - IOS8 TableViewController Pull to Refresh 无法添加 Action

ios - SwiftUI 如何将 DatePicker 与 'TimeStamp' 类型的变量绑定(bind)?

ios - SwiftUI - 列表中的两个导航链接

swiftui - 如何使用 SwiftUI 在 View 上检测向上、向下、向左和向右滑动

ios - NSLayoutConstraint 未分配给常量/变量

swift - 将 Binding<Int> 与 TextField SwiftUI 一起使用

SwiftUI inputAccessoryView 实现

ios - 告诉遇到 endEncountered 的 InputStream 继续,而不是在 Swift 中关闭