美文网首页SwiftUI
SwiftUI 学习笔记-05 从怎么隐藏List 分割线开始

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

作者: _wzz | 来源:发表于2021-05-25 10:44 被阅读0次
    在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,之后再记。

    相关文章

      网友评论

        本文标题:SwiftUI 学习笔记-05 从怎么隐藏List 分割线开始

        本文链接:https://www.haomeiwen.com/subject/aeyqsltx.html