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

标签 ios swift swiftui

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

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

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

UIView.appearance().backgroundColor = UIColor.black

但这也行不通。

实际结果如下:

enter image description here

期望的结果是:

enter image description here

有人知道怎么做吗?

最佳答案

先看这个结果:

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)
        }
        // iOS 16 - No need for tweaking the appearance
        /* .toolbarBackground(.green, in: .navigationBar) */
    }
}

第一个是window:

window.backgroundColor = .magenta

您面临的问题是我们无法移除 SwiftUI 的 HostingViewController 的背景色(目前),因此您无法通过 View 层次结构。您应该等待 API 或尝试伪造导航 View (不推荐)。

关于ios - 如何更改 SwiftUI 中 NavigationView 的背景颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57685679/

相关文章:

ios - NSString类别方法未调用

ios - 使用引用条码字符串生成 UPC-A 条码图像

ios - iOS (Swift) 中的 Tesseract - 如何分离 UITextField 中的文本和数字?

ios - Swift 3. NSFetchRequest 属性ToFetch

SwiftUI ForEach 开放范围与封闭范围

ios - 为什么在解除警报后重置@state

firebase - SwiftUI - 延迟屏幕以避免登录用户闪烁

ios - 如何快速将 map 的特定部分转换为图像?

ios - 删除应用程序后获取推送通知的设备 token

ios - 无法获取 NSDictionary 键的值,出现错误 : The process has been returned to the state before expression evaluation