具有系统背景色的列表在黑暗模式下变得混乱

时间:2019-10-15 23:38:34

标签: ios swiftui ios-darkmode swiftui-list

我正在尝试为列表设置背景颜色,以适应iOS模式(浅色/深色)。 我使用.systemGray5在VStacks中没有问题,但是当在列表中使用它时,我更改为暗模式时,我得到了非常暗的几乎是黑色的颜色,这使所有内容都难以理解。

无论列表是动态的还是静态的,都会发生这种情况。这是错误吗?还是有其他替代方法?

    List {
        Text("Privacy").foregroundColor(Color(.systemRed))
    }.colorMultiply(Color(.systemGray5))

3 个答案:

答案 0 :(得分:1)

问题是colorMultiply将列表中的所有颜色(文本,背景,分隔符)与给定颜色相乘(请参见multiply color blending)。这样会使整个视图变暗,在明亮模式下看起来似乎还可以,但是与您在黑暗模式下想要做的相反。

有两种方法可以更改列表中的背景颜色:

List {
    Text("Privacy").foregroundColor(Color(.systemRed))
        .listRowBackground(Color(.systemGray5))
}
.background(Color(.systemGray5))

background会更改整个列表的背景,但是我想这只能在分组列表中真正看到,因为单元格之间通常没有任何间距。

listRowBackground在List环境中使用时更改视图的背景颜色。那可能就是您要在这里使用的。

答案 1 :(得分:0)

Frank Schlegel提供了仅适用于静态列表的答案。在苹果公司为动态列表解决此问题之前,我通过使用以下代码解决了我的问题

List {
    ForEach(pumpData) { pump in
        Text("pump").listRowBackground(Color(.systemGray5))
        }
    }.background(Color(.systemGray5))

答案 2 :(得分:0)

application/reports+json为我工作。