如何更改列表区域周围的颜色?

Posted

技术标签:

【中文标题】如何更改列表区域周围的颜色?【英文标题】:How do I change the color around the list area? 【发布时间】:2021-09-03 14:19:51 【问题描述】:

在 SwiftUI 中,我将如何更改列表周围的背景颜色?我尝试过使用各种ZStack.listRowBackground(Color.clear),但没有运气。这是一些示例代码。

struct SwiftUIView: View 

    var body: some View 
        ZStack(alignment: .top) 
            Color(.blue)
            VStack 
                List(0 ..< 5)  item in
                    HStack 
                        Image(systemName: "clock")
                        Text("Placeholder")
                    
                
            
        
    

【问题讨论】:

这是否回答了您的问题***.com/a/65093021/12299030? 好吧,也许我遗漏了一些东西,但listRowBackground 只是更改了列表背景颜色,而不是列表周围的区域。 【参考方案1】:

有两种方法可以做到这一点:

    使用SwiftUI-Introspect,这会改变这个特定 List(我的建议) 全局更改所有 Lists 的样式(我不建议这样做,因为这可能会影响许多不同的组件)

这些解决方案的结果:

1:内省

struct ContentView: View 
    var body: some View 
        List(0 ..< 5)  item in
            HStack 
                Image(systemName: "clock")

                Text("Placeholder")
            
        
        .introspectTableView  tableView in
            tableView.backgroundColor = .clear
        
        .background(Color.blue)
    

2:全局外观

struct ContentView: View 
    init() 
        UITableView.appearance().backgroundColor = .clear
    

    var body: some View 
        List(0 ..< 5)  item in
            HStack 
                Image(systemName: "clock")

                Text("Placeholder")
            
        
        .background(Color.blue)
    


您也可以使用以下方法来忽略背景颜色的安全区域:

.background(Color.blue.ignoresSafeArea())

【讨论】:

谢谢!除了选项 #2 之外,似乎没有本地方法可以做到这一点。 @Robert 不幸的是没有。但是我强烈推荐 Introspect 方法,而且我经常使用它来解决这样的基本问题。内省是比使用UIViewRepresentables 和其他东西更好的方法。

以上是关于如何更改列表区域周围的颜色?的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 DialogFragment 周围的背景颜色?

突出显示具有不同颜色图像的区域及其周围的区域

iPhone X - 设置主页指示器周围区域的颜色

更改暴露下拉菜单的背景颜色

如何根据Angularjs中的背景颜色自动更改文本颜色? [复制]

UIView.mask设置颜色