SwiftUI导航栏颜色

时间:2019-08-05 20:32:15

标签: swift xcode swiftui

我正在尝试构建主/详细类型的示例应用程序,而我正在努力使NavigationBar UI在我的详细信息视图中正常工作。我正在处理的视图的代码如下:

struct JobDetailView : View {

    var jobDetails: JobDetails

    var body: some View {

            Form {

                Section(header: Text("General")) {
                    HStack {
                        Text("Job Name")
                        Spacer()
                        Text(jobDetails.jobName)
                            .multilineTextAlignment(.trailing)
                    }

                    HStack {
                        Text("Hourly Rate")
                        Spacer()
                        Text(TextFormatters().currencyString(amount: jobDetails.hourlyRateBasic!))
                            .multilineTextAlignment(.trailing)
                    }
                }

            }   .padding(.top)
                .navigationBarTitle(Text(jobDetails.jobName))
    }
}

.padding(.top)的原因是,向上滚动时,表单会停止与导航栏重叠。

导航栏部分的白色背景是我的问题(第一张图片),我希望它与UI的整体风格保持一致,第二张图片显示了我期望发生的事情。

我尝试添加前景色/背景色和“视图”以更改此颜色,但无济于事。我也不太愿意为NagivationBar设置颜色,因为在黑暗模式下使用时需要进一步配置。

Current view when running application.

Expected view.

1 个答案:

答案 0 :(得分:1)

尚无可用的(SwiftUI)API(至今)(测试版5)。

但是我们可以使用UINavigationBar.appearance(),如下所示:

UINavigationBar.appearance().backgroundColor = .clear

  

完整代码

import SwiftUI

struct JobDetailView: View {

    init() {
        UINavigationBar.appearance().backgroundColor = .clear
    }

    var body: some View {
        NavigationView {
            Form {
                Section(header: Text("General")) {
                    HStack {
                        Text("Job Name")
                        Spacer()
                        Text("Scientist")
                            .multilineTextAlignment(.trailing)
                    }
                    HStack {
                        Text("Hourly Rate")
                        Spacer()
                        Text("$ 1.00")
                            .multilineTextAlignment(.trailing)
                    }
                }

            }
            .navigationBarTitle("Scientist")
            .navigationBarHidden(false)
        }
    }
}

#if DEBUG
struct JobDetailView_Previews: PreviewProvider {
    static var previews: some View {
        JobDetailView()
    }
}
#endif
  

结果

result

  

黑暗模式结果

result dark