我正在尝试为适应iOS模式(浅色/深色(的列表设置背景颜色。 我在VStacks中使用.systemGray5没有问题,但是当在列表中使用它并切换到深色模式时,我得到一种非常暗的,几乎是黑色的颜色,这使得一切都无法理解。
无论列表是动态的还是静态的,都会发生这种情况。这是一个错误吗?还是有其他方法可以做到这一点?
List {
Text("Privacy").foregroundColor(Color(.systemRed))
}.colorMultiply(Color(.systemGray5))
问题是colorMultiply
会将列表中的所有颜色(文本、背景、分隔符(与给定的颜色相乘(请参阅乘以颜色混合(。这将使整个视图变暗,在浅色模式下可能看起来不错,但与在深色模式下要执行的操作相反。
有两种方法可以更改列表中的背景颜色:
List {
Text("Privacy").foregroundColor(Color(.systemRed))
.listRowBackground(Color(.systemGray5))
}
.background(Color(.systemGray5))
background
会改变整个列表的背景,但我想这只在分组列表中真正可见,因为单元格之间通常没有任何空间。
listRowBackground
在列表环境中使用视图时更改视图的背景色。这可能就是你想在这里使用的。
Frank Schlegel提供了一个仅适用于静态列表的答案。在Apple为动态列表解决此问题之前,我使用此代码解决了我的问题
List {
ForEach(pumpData) { pump in
Text("pump").listRowBackground(Color(.systemGray5))
}
}.background(Color(.systemGray5))
.secondarySystemGroupedBackground
为我工作。