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 HTTP加载请求Loading Requests教程
这篇文章主要为大家介绍了Swift HTTP加载请求Loading Requests教程示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-02-02浅析Swift中struct与class的区别(汇编角度底层分析)
这篇文章主要介绍了Swift中struct与class的区别 ,本文从汇编角度分析struct与class的区别,通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-03-03举例讲解Swift编程中switch...case语句的用法
这篇文章主要介绍了Swift编程中switch...case语句的用法,其中fallthrough关键字在switch语句中的使用是重点,需要的朋友可以参考下2016-04-04
最新评论