【发布时间】:2021-07-31 10:17:34
【问题描述】:
我使用TabView浏览相册是因为我需要一个分页功能,但是我的相册有上千张图片,而TabView处理起来很慢。 有什么办法可以延迟加载,让 TabView 可以处理成千上万的数据。
TabView(selection: $assetModel.identifier) {
ForEach(0..<7000) { index in
let asset = assetModel.assetArray[index]
AssetPreviewItemView(asset: asset)
.tag(asset.localIdentifier)
}
}
.tabViewStyle(.page(indexDisplayMode: .always))
.indexViewStyle(.page(backgroundDisplayMode: .always))
【问题讨论】:
-
很可能不是 TabView 很慢。 TabView 仅呈现一组视图,不处理您的任何数据方面,例如获取图像、缓存、预取等。将此逻辑放入模型或视图模型中 - 然后显示您拥有的内容。
-
@CouchDeveloper 感谢您的回复,我可以确定 TabView 很慢。如果将图片更改为彩色,它会冻结并变慢。因为太多,我有7000张照片。我觉得最好的办法就是懒加载,永远保持三张照片,这样最好。
-
您是否已经发现了“LazyView”技巧:forums.swift.org/t/…?不过,您仍然必须考虑到所有视图都会调用 init。否则,你可以考虑使用好的旧 UIKit PageViewController。
-
当您认为某件事使您的应用程序变慢时,请尝试将其删除,看看您是否正确。如果您尝试在没有 TabView 的情况下显示您的收藏,您会发现这不是问题。同样,如果没有您的代码,我们也无法为您提供帮助。
-
@Philip 感谢您的回复。我更新了代码。通过左右滑动页面浏览照片的视图。由于数据过多,速度较慢。