如何在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相关问答推荐

iOS SwiftUI需要不带箭头显示弹出窗口""

SwiftUI SF Symbols图像:暗模式图像

通过在SWIFT中不起作用的泛型传递协议一致性类型

删除领域中的cartItem时出现问题

在SwiftUI中为圆角矩形创建均匀分布的点轮廓

IOS:在UI线程中执行代码的闭包样式的替代

如何在Android或iPhone上的原生react 中处理其他应用程序通知?

SwiftUI-工作表不显示导航标题

当虚拟对象附加到其网格时,如何刷新创建 ARView 的 SwiftUI UIViewRepresentable?

使用 Xamarin 将 dext Bundle 到 iOS .ipa 中

使用异步重载实现Swift协议一致性

Flutter Aging Person 自定义小部件

核心媒体基础知识,了解 CMSampleBuffer、CMBlockBuffer 和 CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer

如何以编程方式触发 SwiftUI DatePicker?

如何在应用程序中显示我的小部件的快照?

iOS 16 堆栈视图中按钮的奇怪动画

如何在不同设备的segment控制中管理文本大小(text size)?

如何确定 WKWebView 的内容大小?

iOS7 UITextView contentsize.height 替代

错误 itms-90035 - Xcode