Swift / iOS 16 空 SwiftUI 列表背景颜色

Car*_*son 7 ios swiftui swiftui-list ios16

我的应用程序是用 SwiftUI 构建的,除了一些我目前正在修复的设计怪癖之外,大部分都可以像 iOS 16 一样运行。

怪癖之一是列表的背景颜色。以前我曾使用 Introspect 设置列表背景的颜色,但由于列表已在 iOS16 中重新实现,因此该方法不再有效。

我已经通过使用新的scrollContentBackground修饰符为iOS 16设备解决了这个问题:

List() {
   some foreach logic here
}
.background(color)
.scrollContentBackground(.hidden)
Run Code Online (Sandbox Code Playgroud)

除了一个问题之外,这按预期工作。

当列表为空时,背景颜色将被忽略,它根据浅色或深色模式设置显示白色或黑色背景(甚至不包括分组的背景颜色)。

有其他人遇到过这个问题吗(或者我做错了什么?),如果是的话,你想出了什么解决方案?

谢谢,C

Abd*_*mon 7

这就是我所做的

if data.count > 0 {
    List()
} else {
    Color.clear
}
Run Code Online (Sandbox Code Playgroud)


Car*_*son 3

可能并不适合所有人,但我有解决我自己问题的方法。

当列表为空时,我使用覆盖层来显示消息,因此我决定在这里使用旧的 ZStack 技巧,它似乎按预期工作。

例子:

List() {
    ForEach(data, id: \.id) { item in
      // some foreach logic here
    }
}
.background(Color.red)
.scrollContentBackground(.hidden)
.overlay(Group {
    if(data.isEmpty) {
        ZStack() {
            Color.red.ignoresSafeArea()
            Text("Empty List!")
        }
    }
})
Run Code Online (Sandbox Code Playgroud)

希望这对其他人有帮助!