SwiftUI 隐藏/取消List的分割线

646 阅读1分钟

前言

UITableview的separatorStyle枚举在此对List通用
究其原因是因为:对于 List 来说,SwiftUI 底层直接使用了成熟的 UITableView 的一套实现逻辑,而并非重新进行绘制,每个row也是对应的UITableViewCell, SwiftUI 层只是 View 描述的数据抽象。

所以我们依然可以采用在 UIKit框架中的方式来解决此问题。

iOS14以下

List {
    ForEach(0..<3) { _ in
        VStack {
            Text("Hello, World!").padding(.leading)
        }
        .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .leading)
        .listRowInsets(EdgeInsets())
        .background(Color(UIColor.systemBackground)))
    }
}

stackoverflow中更多参考文献

iOS15 +

func listRowSeparator(_ visibility: Visibility, edges: VerticalEdge.Set = .all) -> some View

其调用方式为
List (0..<50) { index in
      Text("(index)")
          .listRowSeparator(.hidden)
 }

效果图

image.png