SwiftUI List在MacOS中的性能优化示例

 更新时间:2022年09月03日 14:22:38   作者:liaoWorkin  
这篇文章主要为大家介绍了SwiftUI List在MacOS中的性能优化示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

引言

List在iOS中有懒加载的特性,但是在MacOS中会一次性加载完List中的所有的数据。并没有懒加载的特性。

所以在MacOS的List中当数据量巨大时,会存在巨大的性能瓶颈。

  var body: some View {
    List(){
        ForEach(currentSectionModel) { (sectionModel) in
            Section(header:
                        HStack {
                Text("section")+Text(sectionModel.word).font(.title).foregroundColor(.red)
                        }.frame(height:35)
            ) {
              ForEach(currentSectionModel, id: \.self) { (wordModel) in
                  Text(wordModel.word)
                }
            }
        }
    }

当数据量达到15000条时, 在16寸i9的mbp上加载时长需要4.53s

这个时候建议使用 ScrollView + LazyVStack(macOS 11, iOS14支持)

ScrollView {
    LazyVStack {
    }
}

来获取巨大性能提升

  var body: some View {
    ScrollView {
        LazyVStack {
            ForEach(currentSectionModel) { (sectionModel) in
                Section(header:
                            HStack {
                    Text("section")+Text(sectionModel.word).font(.title).foregroundColor(.red)
                            }.frame(height:35)
                ) {
                  ForEach(currentSectionModel, id: \.self) { (wordModel) in
                      Text(wordModel.word)
                    }
                }
            }
        }
    }.onAppear {
        DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
            currentSectionModel = storeData
        }
    }
}

实测加载15000 条数据加载时长为31ms 加载时长为原来的 0.0068倍。 因为只加载了显示的部分,所以性能提升巨大。

以上就是SwiftUI List在MacOS中的性能优化示例的详细内容,更多关于SwiftUI List性能优化MacOS的资料请关注脚本之家其它相关文章!

相关文章

  • swift实现自定义圆环进度提示效果

    swift实现自定义圆环进度提示效果

    这篇文章主要为大家详细介绍了swift实现自定义圆环进度提示效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • Swift HTTP加载请求Loading Requests教程

    Swift HTTP加载请求Loading Requests教程

    这篇文章主要为大家介绍了Swift HTTP加载请求Loading Requests教程示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • Swift使用enum抹平数组元素差异实例详解

    Swift使用enum抹平数组元素差异实例详解

    这篇文章主要为大家介绍了Swift使用enum抹平数组元素差异实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • Swift能代替Objective-C吗?

    Swift能代替Objective-C吗?

    这是我在网上上看到的答案,复制粘贴过来和大家分享一下,因为我和很多人一样很关心Swift的出现对Mac开发的影响和对Objective-C的影响。
    2014-09-09
  • 浅析Swift中struct与class的区别(汇编角度底层分析)

    浅析Swift中struct与class的区别(汇编角度底层分析)

    这篇文章主要介绍了Swift中struct与class的区别 ,本文从汇编角度分析struct与class的区别,通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • 举例讲解Swift编程中switch...case语句的用法

    举例讲解Swift编程中switch...case语句的用法

    这篇文章主要介绍了Swift编程中switch...case语句的用法,其中fallthrough关键字在switch语句中的使用是重点,需要的朋友可以参考下
    2016-04-04
  • Swift调用Objective-C编写的API实例

    Swift调用Objective-C编写的API实例

    这篇文章主要介绍了Swift调用Objective-C编写的API实例,介绍的比较全面和详细,对Objective-C代码的重复利用有极大好处,的朋友可以参考下
    2014-07-07
  • Swift教程之属性详解

    Swift教程之属性详解

    这篇文章主要介绍了Swift教程之属性详解,属性是描述特定类、结构或者枚举的值,计算属性存在于类、结构与枚举中,存储属性仅仅只在类与结构中,需要的朋友可以参考下
    2015-01-01
  • Swift实现快速排序算法的代码示例

    Swift实现快速排序算法的代码示例

    这篇文章主要介绍了Swift实现快速排序算法的代码示例,首先利用分治法讲解了快速排序的思路,需要的朋友可以参考下
    2016-07-07
  • Swift之运算符重载示例详解

    Swift之运算符重载示例详解

    这篇文章主要为大家介绍了Swift之运算符重载示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07

最新评论