amb*_*dor 5 lazy-loading ios swift swiftui lazyvstack
TL;DR:是否有一些参数或方法可以设置 LazyVStack 初始化视图的偏移量?
LazyVStack 延迟初始化视图,因此当我滚动时,下一个(几个?)视图将被初始化。我在绘制视图后加载图像,使用 swift 中的 SDWebImage 包。这需要几毫秒的时间来查看视图,并且由于我使用的是 LazyVStack,如果滚动速度很快(即使在合理的限制内),占位符会在短时间内可见,因为视图刚刚(太)短的一刻之前创建。如果我滚动速度非常慢,图像将在视图出现之前加载,因此看不到占位符。
如果我能让 LazyVStack 提前几毫秒初始化视图,我的问题就会消失......
曾经认为这是一个非常常见的问题,正确安排初始化时间以免加载太早或太晚..但文档中对此没有任何内容
快速回答问题:没有
话虽这么说,在这种情况下仍然有一个解决方案:由于我之前使用过,只需在视图开始初始化之前SDWebImageSwiftUI
调用以下命令即可解决我的问题:
SDWebImagePrefetcher.shared.prefetchURLs(urls) { finishedCount, skippedCount in
print("preloading complete")
}
Run Code Online (Sandbox Code Playgroud)
然后在我的 LazyVStack 中使用:
LazyVStack {
ForEach(items, id: \.self) { item in
ItemView(item: item)
.onAppear {
// calling function to prefetch next x-items by their url
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1563 次 |
最近记录: |