SwiftUI?List在MacOS中的性能優(yōu)化示例
引言
List在iOS中有懶加載的特性,但是在MacOS中會(huì)一次性加載完List中的所有的數(shù)據(jù)。并沒有懶加載的特性。
所以在MacOS的List中當(dāng)數(shù)據(jù)量巨大時(shí),會(huì)存在巨大的性能瓶頸。
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)
}
}
}
}
當(dāng)數(shù)據(jù)量達(dá)到15000條時(shí), 在16寸i9的mbp上加載時(shí)長(zhǎng)需要4.53s
這個(gè)時(shí)候建議使用 ScrollView + LazyVStack(macOS 11, iOS14支持)
ScrollView {
LazyVStack {
}
}
來(lái)獲取巨大性能提升
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
}
}
}
實(shí)測(cè)加載15000 條數(shù)據(jù)加載時(shí)長(zhǎng)為31ms 加載時(shí)長(zhǎng)為原來(lái)的 0.0068倍。 因?yàn)橹患虞d了顯示的部分,所以性能提升巨大。
以上就是SwiftUI List在MacOS中的性能優(yōu)化示例的詳細(xì)內(nèi)容,更多關(guān)于SwiftUI List性能優(yōu)化MacOS的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
詳解swift中xcworkspace多項(xiàng)目管理
給大家詳細(xì)講解了IOS開發(fā)中swift語(yǔ)言xcworkspace多項(xiàng)目管理的方法和介紹,一起參考一下。2017-11-11
Swift用final關(guān)鍵字來(lái)防止重寫
final關(guān)鍵字在大多數(shù)的編程語(yǔ)言中都存在,表示不允許對(duì)其修飾的內(nèi)容進(jìn)行繼承或者重新操作。下面通過(guò)實(shí)例代碼給大家介紹swift用final關(guān)鍵字來(lái)防止重寫2016-12-12
swift語(yǔ)言AutoreleasePool原理及使用場(chǎng)景
這篇文章主要為大家介紹了swift語(yǔ)言AutoreleasePool原理及使用場(chǎng)景詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
Swift中優(yōu)雅處理閉包導(dǎo)致的循環(huán)引用詳解
這篇文章主要給大家介紹了關(guān)于Swift中優(yōu)雅的處理閉包導(dǎo)致的循環(huán)引用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Swift具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
Swift中通過(guò)疊加UILabel實(shí)現(xiàn)混合進(jìn)度條的方法
這篇文章主要介紹了Swift中通過(guò)疊加UILabel實(shí)現(xiàn)混合進(jìn)度條的方法的相關(guān)資料,需要的朋友可以參考下2016-08-08

