SwiftUI:listRowInsets 未按预期工作

SwiftUI: listRowInsets not working as expected

listRowInsets(_:) 在使用 List()List(Data,id) 时未按预期工作。在下面的 示例 1 中,零插图完美地工作,而在 示例 2 中它什么都不做。


示例 1:

struct ContentView: View {
    var body: some View {
        List {
            Color.red
                .listRowInsets(.init(top: 0, leading: 0, bottom: 0, trailing: 0))
            Color.blue
                .listRowInsets(.init(top: 0, leading: 0, bottom: 0, trailing: 0))
            Color.yellow
                .listRowInsets(.init(top: 0, leading: 0, bottom: 0, trailing: 0))
        }
    }
}

结果:


示例 2

struct ContentView: View {
    var colors: [Color] = [.red, .blue, .yellow]
    var body: some View {
        List(colors, id: \.self) { color in
            color.listRowInsets(.init(top: 0, leading: 0, bottom: 0, trailing: 0))
        }
    }
}

结果:

我认为原因在于使用的构造函数。 .listRowInsets by documentation effects view 被放置在 List 中(直接)。

以下作品

var colors: [Color] = [.red, .blue, .yellow]
var body: some View {
    List {
        ForEach(colors, id: \.self) { color in
            color.listRowInsets(.init(top: 0, leading: 0, bottom: 0, trailing: 0))
        }
    }
}

除了 Asperi 的回答,如果你有部分,你需要对部分应用 listRowInsets 视图修饰符,否则设置也会被忽略。