这篇文章主要为大家介绍了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的资料请关注编程学习网其它相关文章!
织梦狗教程
本文标题为:SwiftUI List在MacOS中的性能优化示例


基础教程推荐
猜你喜欢
- R语言 ggplot2改变柱状图的顺序操作 2022-11-17
- ruby-on-rails-为使用Rails 4,nginx和乘客的用户设置自定义域 2023-09-21
- Swift中重写和重载的使用与对比总结 2023-07-05
- R语言-修改(替换)因子变量的元素操作 2022-11-26
- R语言绘制折线图实例分析 2022-11-21
- Swift初始化器与可选链的使用方法介绍 2023-07-08
- 浅析ELF转二进制允许把 Binary 文件加载到任意位置 2023-07-06
- ruby on rails validates 2023-09-22
- Ruby3多线程并行Ractor使用方法详解 2023-07-23
- win10下使用virtualbox + vagrant配置ruby开发机环境 2023-07-23