使用 NavigationView 和 List 时如何更改 SwiftUI 中的背景颜色?

Posted

技术标签:

【中文标题】使用 NavigationView 和 List 时如何更改 SwiftUI 中的背景颜色?【英文标题】:How can I change the background color in SwiftUI when I am using NavigationView and List? 【发布时间】:2019-10-31 14:04:00 【问题描述】:

我想更改背景颜色,但我正在使用 NavigationView 和 List。这就是为什么 ZStack 方法对我不起作用的原因。

这是我的代码:

NavigationView 
    List 
        Text("Some Text")
    

    .navigationBarTitle("Test")

【问题讨论】:

【参考方案1】:

您可以在列表中使用 .listRowBackground。

  ZStack
        Color.blue
   NavigationView 
    ZStack
        Color.red
       List 
        ZStack
            Color.green
            Text("Some Text").background(Color.green).opacity(0.5)

        .listRowBackground(Color.red)
        
    
       .navigationBarTitle("Test")
   .padding()

    

【讨论】:

它不太好用。导航栏是固定的。所以较大的列表滚动浏览看起来很奇怪的导航栏。不过还是谢谢你的回答 您可以使用 .inline 样式使导航栏更小。原则上,如果您知道如何自定义列表,则可以使用 listStyle 配置列表。 您可能需要查看这篇文章:***.com/questions/57128547/…【参考方案2】:
NavigationView 
    List 
         Text("Some Text")
    
    .navigationBarTitle("Test")
.colorMultiply(Color.green)

【讨论】:

但是如果我想使用图像,那么它们也会被着色【参考方案3】:

我终于找到了问题的答案:

init() 
    UITableView.appearance().backgroundColor = UIColor(named: "CustomBackgroundColor")
    UITableViewCell.appearance().backgroundColor = UIColor(named: "CustomBackgroundColor")
    UITableView.appearance().tableFooterView = UIView()


var body: some View 
    NavigationView 
        List 
            Text("Hello")
        

        .navigationBarTitle("Test")
    

【讨论】:

以上是关于使用 NavigationView 和 List 时如何更改 SwiftUI 中的背景颜色?的主要内容,如果未能解决你的问题,请参考以下文章

Swiftui [BUG] NavigationView 和 List 仅在 iPad 模拟器上不显示

SwiftUI:当 List 和 ForEach 嵌入 TabView 时 WatchOS 8.1 中的 NavigationView 错误

SwiftUI嵌入Stack样式导航视图(NavigationView)中List显示怪异的解决

SwiftUI 如何在多级 NavigationView 中停止 List 的动画

SwiftUI NavigationView 背景颜色

SwiftUI NavigationView 与 List 内 ForEach 中的 NavigationLink 来回跳转