一尘不染

如何在SwiftUI中设置NavigationView背景色

swift

我正在尝试设置的背景色NavigationView。我正在尝试通过ZStack使用下面的代码(部分来自SwiftUI教程)添加一个。然而,这只是以往的白色,除非我替换NavigationView...Spacer()

    var body: some View {
    ZStack
        {
            NavigationView {
                List {
                    Toggle(isOn: $userData.showFavoritesOnly) {
                        Text("Favourites")
                    }
                    ForEach(userData.landmarks) { landmark in
                        if !self.userData.showFavoritesOnly || landmark.isFavorite {
                            NavigationLink(destination: LandmarkDetail(landmark: landmark)) {
                                LandmarkRow(landmark: landmark)
                            }
                        }
                    }
                }

                .navigationBarTitle(Text("Landmarks"), displayMode: .large)
            }

    }.background(Color.blue.edgesIgnoringSafeArea(.all))
}

我可以设置单个列表项的颜色,但我希望整个背景显示为蓝色


阅读 1626

收藏
2020-07-07

共1个答案

一尘不染

与相同UINavigationBar。但是,由于还没有直接的api,您可以使用appearance以下命令进行更改:

UINavigationBar.appearance().backgroundColor = .orange
UINavigationBar.appearance().tintColor = .green
UINavigationBar.appearance().barTintColor = .yellow
UINavigationBar.appearance().titleTextAttributes = [.foregroundColor: UIColor.red]
UINavigationBar.appearance().largeTitleTextAttributes = [.foregroundColor: UIColor.red]

您应该将其放置在可以确保编译器在init()方法内部读取的位置。

请注意,其中一些将 在Xcode 11 beta 5以下无法正常工作

2020-07-07