ios - 如何在 SwiftUI 中更改导航栏标题的文本属性?

标签 ios uikit swiftui

最近,我一直在研究新的 SwiftUI 框架。

我对框架的工作原理有基本的了解,但我想不出更改导航栏标题属性的方法。

我使用的是最新的 Xcode 11 beta 5 和相应的 swift/swiftUI 版本

我已经尝试了一些东西。 我尝试的第一件事是只向文本添加修饰符,但 SwiftUI 似乎以某种方式忽略了导航栏环境中的修饰符。

我尝试的第二件事是通过 UINavigationBar.apperance().titleTextAttributes = ...

更改标题属性

但他们似乎在最新的测试版中删除了自定义 UINavigationBar 的 titleTextAttributes 的能力。

//First thing:
List(myData) {
  ...
}
.navigationBarTitle(Text("My title").font(myFont))


// Second thing
UINavigationBar.appearance().titleTextAttributes = myAttrs

我希望导航栏标题有我的自定义字体,但它始终是苹果默认字体。

最佳答案

在SwiftUI中,此时我们不能直接改变navigationBarTitle字体,但是你可以这样改变navigationBar的外观,

struct YourView: View {
    init() {
        //Use this if NavigationBarTitle is with Large Font
        UINavigationBar.appearance().largeTitleTextAttributes = [.font : UIFont(name: "Georgia-Bold", size: 20)!]

        //Use this if NavigationBarTitle is with displayMode = .inline
        //UINavigationBar.appearance().titleTextAttributes = [.font : UIFont(name: "Georgia-Bold", size: 20)!]
    }

    var body: some View {
        NavigationView {
            Text("Hello World!")
              .navigationBarTitle(Text("Dashboard").font(.subheadline), displayMode: .large)
            //.navigationBarTitle (Text("Dashboard"), displayMode: .inline)
        }
    }
}

希望对您有所帮助。谢谢!!

关于ios - 如何在 SwiftUI 中更改导航栏标题的文本属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57370107/

相关文章:

iOS 8 - 服务器 'randomly' 未接收到使用 tcp/ip 协议(protocol)发送的数据包

ios - Collection View 在第一个索引上设置单选按钮图像并选择更改

ios - UIStepper不会注册任何事件

swiftui - 为什么我的 TextField 的背景没有更改为我设置的颜色?

ios - SwiftUI: ScrollView 中的固定标题,在类似 Excel 的 View 中具有垂直和水平滚动

ios - React Native map 标注按下在 IOS 上不触发

ios - UINavigationBar 在 TableView 更新后才更新条形按钮项目

ios - 阴影会减慢 UIScrollView 的速度

ios - 如何手动加载 UITableView

swift - 在 SwiftUI 中动态隐藏 View