SwiftUI 隐藏/取消List的分割线

目前SwiftUI的中文资料太少了,我在学习过程中碰到的问题随手记录下来,分享给碰到同样问题的人

List (0..<50) { index in
      Text("\(index)")
 }
 .onAppear {
      UITableView.appearance().separatorStyle = .none
 }

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


在iOS 14 以上方法无效,有一种简单的方式去除分割线即设置listStyle

List (0..<50) { index in
      Text("\(index)")
 }
.listStyle(SidebarListStyle())
其他的方式可参考 stackoverflow对应问答

在iOS15 苹果新增了一个api可以直接调用

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

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

详情以苹果文档为准

你可能感兴趣的:(SwiftUI 隐藏/取消List的分割线)