如何在SwiftUI中更改NavigationView的背景颜色?

时间:2019-08-28 05:38:26

标签: ios swift swiftui

我正在尝试使用以下代码更改NavigationView(而非导航栏)的背景颜色:

NavigationView {
    Text("Text")
}
.background(Color.clear)

但是它不起作用。 另外,我尝试更改UIView外观:

UIView.appearance().backgroundColor = UIColor.black

但是它也不起作用。

实际结果显示如下:

enter image description here

所需的结果是:

enter image description here

有人知道该怎么做吗?

1 个答案:

答案 0 :(得分:2)

首先查看此结果:

View hierarchy

如您所见,您可以像这样设置View层次结构中每个元素的颜色:

struct ContentView: View {

    init(){
        UINavigationBar.appearance().backgroundColor = .green 
        //For other NavigationBar changes, look here:(https://stackoverflow.com/a/57509555/5623035)
    }

    var body: some View {
        ZStack {
            Color.yellow
            NavigationView {
                ZStack {
                    Color.blue
                    Text("Some text")
                }
            }.background(Color.red)
        }
    }
}

第一个是window

window.backgroundColor = .magenta

您面临的问题是我们无法删除SwiftUI的HostingViewController的背景色(尚未),因此您无法通过视图层次结构看到navigationView(您所称的内容)。您应该等待API或尝试伪造导航视图(不推荐)。