如何在SwiftUI中更改导航栏标题 colored颜色

NavigationView {
            List{
                ForEach(0..<15) { item in
                    HStack {
                        Text("Apple")
                            .font(.headline)
                            .fontWeight(.medium)
                            .color(.orange)
                            .lineLimit(1)
                            .multilineTextAlignment(.center)
                            .padding(.leading)
                            .frame(width: 125, height: nil)


                        Text("Apple Infinite Loop. Address: One Infinite Loop Cupertino, CA 95014 (408) 606-5775 ")
                            .font(.subheadline)
                            .fontWeight(.regular)
                            .multilineTextAlignment(.leading)
                            .lineLimit(nil)


                    }
                }
            }
            .navigationBarTitle(Text("TEST")).navigationBarHidden(false).foregroundColor(.orange)
            }

我用.foregroundColor(.orange)试过了,但不起作用.

我也试了.navigationBarTitle(Text("TEST").color(.orange))

有什么帮助吗?

推荐答案

要在全局做到这一点,使用.appearance()not所必需的.

尽管SwiftUI不直接公开导航样式,但您可以使用UIViewControllerRepresentable解决这个问题.由于SwiftUI在幕后使用常规UINavigationController,因此view controller仍将具有有效的.navigationController属性.

struct NavigationConfigurator: UIViewControllerRepresentable {
    var configure: (UINavigationController) -> Void = { _ in }

    func makeUIViewController(context: UIViewControllerRepresentableContext<NavigationConfigurator>) -> UIViewController {
        UIViewController()
    }
    func updateUIViewController(_ uiViewController: UIViewController, context: UIViewControllerRepresentableContext<NavigationConfigurator>) {
        if let nc = uiViewController.navigationController {
            self.configure(nc)
        }
    }

}

并使用它

struct ContentView: View {
    var body: some View {
        NavigationView {
            ScrollView {
                Text("Don't use .appearance()!")
            }
            .navigationBarTitle("Try it!", displayMode: .inline)
            .background(NavigationConfigurator { nc in
                nc.navigationBar.barTintColor = .blue
                nc.navigationBar.titleTextAttributes = [.foregroundColor : UIColor.white]
            })
        }
    .navigationViewStyle(StackNavigationViewStyle())
    }
}

Modified navigation bar

Ios相关问答推荐

Swift 共享数据模型在页面之间进行通信.这个怎么运作

访问未定义的 stage_in 金属着色器参数

使用实时数据库的应用程序无法在被 Firebase 阻止的罗马尼亚 ISP 中运行

如何将 ImageView 放置在 UIView 的中心?

为什么我的应用在 Testflight 中没有下载 dSYM 按钮?

错误:在 iOS 上运行 Flutter 时找不到“Flutter/Flutter.h”文件

如何在 Apple Silicon (M1) 上运行 CocoaPods

错误:安装 cocoapods 时出错:错误:无法构建 gem 原生扩展

使用 Swift 5.1 编译的模块不能被 Swift 5.1.2 编译器导入

如何在 SwiftUI 中检测 TextField 的实时变化?

iOS SwiftUI:以编程方式弹出或关闭视图

如何使用 SwiftUI 调整图像大小?

Xcode 10.2.1 命令 PhaseScriptExecution 失败,退出代码为非零

6.5" 显示器的应用store 屏幕截图大小是多少?

错误 Appstore 连接:Info.plist 文件中缺少目的字符串

滑动列表项以获取更多选项(Flutter)

CredStore 执行查询错误

Xcode 9 Swift 语言版本 (SWIFT_VERSION)

检测设备是否为 iPhone X

链接器命令失败,退出代码 1(使用 -v 查看调用),Xcode 8,Swift 3