0

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

无论列表是动态的还是静态的,都会发生这种情况。这是一个错误吗?还是有其他方法可以做到这一点?

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

3 回答 3

1

问题是colorMultiply它将列表中的所有颜色(文本、背景、分隔符)与给定的颜色相乘(请参阅multiple color blending)。这将使整个视图变暗,这在浅色模式下可能看起来不错,但与您在深色模式下想要做的相反。

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

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

background将改变整个列表的背景,但我想这仅在分组列表中真正可见,因为单元格之间通常没有任何空间。

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

于 2019-10-16T06:29:07.040 回答
0

Frank Schlegel 提供了一个仅适用于静态列表的答案。在 Apple 为动态列表修复此问题之前,我使用此代码解决了我的问题

List {
    ForEach(pumpData) { pump in
        Text("pump").listRowBackground(Color(.systemGray5))
        }
    }.background(Color(.systemGray5))
于 2019-10-16T10:19:35.827 回答
0

.secondarySystemGroupedBackground为我工作。

于 2020-10-14T14:05:11.287 回答