SwiftUI

SwiftUI 学习笔记-05 从怎么隐藏List 分割线开始

2021-05-25  本文已影响0人  _wzz
在Swift/OC自定义分割线(Separator line)是组织TableView必不可少的一步,到了SwiftUI 使用List时,却没有找到相关的Modifier来控制或自定义分割线,从墙外的世界看回来,目前大致有两种解决方案。

1.iOS 13

此方法目前亲测仅支持iOS14以下,iOS14已经不起作用,根据的是:SwiftUI本质是封装已经健全且强大的TableView,所以对于TableView的操作还是可以愉快运行。

struct WidgetDetail: View {
    init() {
        UITableView.appearance().separatorColor = .clear
        UITableView.appearance().separatorStyle = .none
    }
    var body:  some View  {
        List {
          ...
        }
    }
}

在iOS 13下,在 init{} 内的两个方法都可以实现隐藏分割线,在iOS14中已经失效。

由此还能做一下拓展,比如我在实现类似系统应用中常见的带有圆角的Cell时用到的ListStyle: InsetGroupedListStyle() ,将一个Cell作为section时,会发现默认的Section Height与预想的高度差的有点多,那我就可以使用上面的方法来设置Section Height:

...
    init() {
        UITableView.appearance().sectionHeaderHeight = 0
    }
...

但这样还是有问题,在将Section Header设置为0之后,List的所有Section同时响应,无法显示其他有显示Title需求的Section Header,所以在WWDC2020后,Apple提供了新的 Api -- LazyVStack,这就是另外一种解决方案。

2.iOS 14

直接使用ScrollView + LazyVStack,LazyVStack不会将所有的Cell同时渲染,在保证了性能的同时,也能高度自定义List内容,关于LazyVStack,之后再记。

上一篇下一篇

猜你喜欢

热点阅读