SwiftUI:listRowInsets 未按预期工作

Posted

技术标签:

【中文标题】SwiftUI:listRowInsets 未按预期工作【英文标题】:SwiftUI: listRowInsets not working as expected 【发布时间】:2019-11-19 08:00:31 【问题描述】:

listRowInsets(_:) 在使用List()List(Data,id) 时无法正常工作。在下面的 Example 1 中,零插入完美地工作,而在 Example 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))
        
    

结果:

【问题讨论】:

【参考方案1】:

我认为原因在于使用的构造函数。 .listRowInsets by 文档效果视图被放置在列表中(直接)。

以下作品

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))
        
    

【讨论】:

很棒的发现! Fwiw,虽然这个解决方案有效,但我想知道另一种方式失败是否只是一个错误或预期的行为。 developer.apple.com/documentation/swiftui/color/… 讨论中的示例提到像 @Mohammed 所做的那样设置列表插图。..【参考方案2】:

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

【讨论】:

以上是关于SwiftUI:listRowInsets 未按预期工作的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI:当“navigationBarItems”修改列表时,“listRowInsets”无法按预期工作[重复]

Swiftui listRowInsets 在添加到空数组时会发生意外更改

MySQL 索引未按预期使用

新的 SwiftUI/iOS 15.0 .animation 未按预期工作

SwiftUI PageView iOS 13 - 导航链接未按预期工作

如何在 SwiftUI 中删除列表的左右填充?