如何在 NavigationView 中设置列​​表的背景颜色

Posted

技术标签:

【中文标题】如何在 NavigationView 中设置列​​表的背景颜色【英文标题】:How to set the background color of a List in a NavigationView 【发布时间】:2021-08-04 08:29:45 【问题描述】:

考虑一个包含List 项的NavigationView。如何给这个背景颜色?

NavigationView 放入ZStack - 不起作用 将ZStack 放入NavigationView(下面的代码示例) - 不起作用
struct test: View 
    var body: some View 
        NavigationView 
            ZStack 
                Color.blue
                List 
                    ForEach(["1", "2", "3"], id: \.self)  item in
                        NavigationLink(destination: EmptyView()) 
                            Text("Some title")
                        
                    
                
                .navigationTitle("Items")
            
        
    

【问题讨论】:

这是你的答案吗? ***.com/a/67941522/14733292 【参考方案1】: 将 ZStack 放在 NavigationView 中,同时设置 List 的 UITableView onAppear 的外观。 在 ForEach 上设置 .listRowBackground 以使单元格获得相同的背景颜色。
struct test: View 
    var body: some View 
        NavigationView 
            ZStack 
                Color.blue.edgesIgnoringSafeArea(.all)
                List 
                    ForEach(["1", "2", "3"], id: \.self)  item in
                        NavigationLink(destination: EmptyView()) 
                            Text("Some title")
                        
                    .listRowBackground(Color.blue)
                
                .onAppear() 
                    UITableView.appearance().backgroundColor = UIColor.clear
                    UITableViewCell.appearance().backgroundColor = UIColor.clear
                
                .navigationTitle("Items")
            
        
    

【讨论】:

【参考方案2】:

如果您不想更改应用中每个ListForm 的外观,可以使用SwiftUI-Introspect。

我在 SwiftUI 中更改了列表行的背景颜色,并使用 Introspect 设置了背景,因此它影响这个 List 而没有其他影响。

代码:

NavigationView 
    List 
        ForEach(["1", "2", "3"], id: \.self)  item in
            NavigationLink(destination: EmptyView()) 
                Text("Some title")
            
            .listRowBackground(Color.blue)
        
    
    .introspectTableView  tableView in
        tableView.backgroundColor = .systemBlue
    
    .navigationTitle("Items")

注意:UIKit 的 .systemBlue 等价于 SwiftUI 的 .blue

【讨论】:

以上是关于如何在 NavigationView 中设置列​​表的背景颜色的主要内容,如果未能解决你的问题,请参考以下文章

如何在 JTable/JXTable 中设置列​​宽?

如何在 Doctrine (Symfony 3) 实体中设置列位置

如何在 Kendo Grid 中设置列​​优先级

如何在 CSS 网格布局中设置列的最大宽度?

如何在 db2 sql 中设置列​​数据类型

如何在 Windows 窗体 (C#) 中设置列​​表框的确切高度?