我创建了带有三个导航链接的主视图。单击一下,将显示一个视图,其中包含从AWS S3提取的180张图像的列表。在滚动过程中,该视图处于挂接状态。因此,图像应在后台异步加载。我已经实现了降采样功能,以减少内存占用。我遵循了WWDC 2018的演讲,该演讲解释了如何使用DispatchQueue实现异步加载。但是我不起作用。 顺便说一句,我是SwiftUI和Swift的新手。
我试图像WWDC演讲中的此屏幕截图一样实现它。我的实现在下面的代码片段中进行了注释。 我也尝试使用Combine框架,但没有找到解决我问题的方法。 大多数网站都介绍了如何在Swift中使用DispatchQueue,但在SwiftUI中却没有,这使我很难从哪里开始。
var body: some View {
List {
ForEach(range.count, id: \.self) { item in
NavigationLink(destination: ImageLargeView()) {
//DispatchQueue.main.async {
Image(uiImage: downsample(thisReturnesAllDownsampledImagesAsUIImage))
//}
}
.frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: 200, alignment: .center)
.clipped()
}
}
}
我的目标是以最少的内存占用空间摆脱连接问题。