如何在 SwiftUI mac 应用程序中更改屏幕背景颜色?

Posted

技术标签:

【中文标题】如何在 SwiftUI mac 应用程序中更改屏幕背景颜色?【英文标题】:How to change the screen background color in SwiftUI mac app? 【发布时间】:2021-05-27 10:24:10 【问题描述】:

我有以下代码:

    var body: some View 
        NavigationView 
            List 
                ForEach(users)  user in
                    HStack 
                        NetworkImage(
                            url: URL(string: "https://via.placeholder.com/100x100")
                        ).frame(width: 50, height: 50).cornerRadius(8.0)
                        Text(user.name)
                    
                
            
            .navigationTitle("Users")
        .onAppear 
            self.getUsers()
        
    

现在,如何在列表视图中移除这个半透明背景并使用像白色这样的纯色?

【问题讨论】:

【参考方案1】:

您可以使用 listRowBackground() 修饰符为列表应用颜色。

List 
    ForEach(0..<10) 
        Text("Row \($0)")
    
    .listRowBackground(Color.red)

上面是简单的 ListView 和您的代码 ==

var body: some View 
        NavigationView 
            List 
                ForEach(users)  user in
                    HStack 
                        NetworkImage(
                            url: URL(string: "https://via.placeholder.com/100x100")
                        ).frame(width: 50, height: 50).cornerRadius(8.0)
                        Text(user.name)
                    
                .listRowBackground(Color.red)
            
            .navigationTitle("Users")
        .onAppear 
            self.getUsers()
        
    

我希望这对你有用。

【讨论】:

它会产生这样的结果i.imgur.com/tvs3ITF.png。如何为列表视图周围的填充添加颜色? 试试.colorMultiply(.red)而不是.listRowBackground(Color.red) 我这样做了,但现在卷轴搞砸了。 Color.white 也不起作用 是的全白【参考方案2】:

迟到的答案...

您是否尝试将您的列表嵌入到ZStack 中?并在列表之前应用颜色视图?

var body: some View 
            NavigationView 
                ZStack 
                    Color.white.edgesIgnoringSafeArea(.all) //<--- HERE!
                    List 
                        ForEach(users)  user in
                            HStack 
                                NetworkImage(
                                    url: URL(string: "https://via.placeholder.com/100x100")
                                ).frame(width: 50, height: 50).cornerRadius(8.0)
                                Text(user.name)
                            
                        
                    
                    .navigationTitle("Users")
                
            .onAppear 
                self.getUsers()
            
        

【讨论】:

以上是关于如何在 SwiftUI mac 应用程序中更改屏幕背景颜色?的主要内容,如果未能解决你的问题,请参考以下文章

当我们在文本和图像之间切换按钮内容时,如何停止 SwiftUI 更改固定填充?

更改 ScrollView SwiftUI 的背景颜色

更改 ScrollView SwiftUI 的背景颜色

更改 TabView (SwiftUI) 中未选中图标的颜色

如何使用 SwiftUI 将手机锁定为纵向模式?

如何指定或更改按钮 SwiftUI 的可点击区域