如何隐藏SwiftUI列表分隔符

9

我试图隐藏列表中单元格之间的分隔线,但根据苹果文档的说明似乎没有办法实现。

有什么好的方法吗?


那看起来是一个不错的解决方案!谢谢! - Daplerio
1个回答

16

iOS 15:

今年,苹果推出了一个新的修饰符.listRowSeparator,可用于样式分隔符。您可以传递.hidden来隐藏它:

List {
    ForEach(items, id:\.self) { 
        Text("Row \($0)")
            .listRowSeparator(.hidden)
    }
}

iOS 14

在iOS 14中,您可能考虑使用LazyVStack替代列表进行此操作:

ScrollView {
    LazyVStack {
        ForEach((1...100), id: \.self) {
           Text("Placeholder \($0)")
        }
    }
}

请注意,LazyVStack是一种懒加载方式,不会一次性渲染所有行。因此它们非常高效,并且在 WWDC 2020 中由 Apple 自己建议使用。


iOS 13

在 SwiftUI 的 List 中,iOS 使用的是 UITableView。所以要去掉

额外的分割线(在列表下方):

你需要一个 tableFooterView 来移除。

所有的分割线(包括实际的分割线):

你需要将 separatorStyle 设置为 .none

init() {
    // To remove only extra separators below the list:
    UITableView.appearance().tableFooterView = UIView()

    // To remove all separators including the actual ones:
    UITableView.appearance().separatorStyle = .none
}

var body: some View {
    List {
        Text("Item 1")
        Text("Item 2")
        Text("Item 3")
    }
}

友情提醒:请将.listRowSeparator(.hidden)应用于List中的每个“元素”,而不是应用于List本身,因为那样不会产生任何效果。 - PDK
友情提醒:请将.listRowSeparator(.hidden)应用于List中的每个“元素”,而不是应用于List本身,因为那样不会产生任何效果。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接