【发布时间】:2023-04-06 19:44:01
【问题描述】:
我需要在单元格中加载 100 张图片。如果我在 tableView cellForRowAt 中使用此方法:
cell.cardImageView.image = UIImage(named: "\(indexPath.row + 1).jpg")
并开始快速滚动我的tableView 冻结。
我使用这种方法在后台加载修复冻结的图像数据:
func loadImageAsync(imageName: String, completion: @escaping (UIImage) -> ()) {
DispatchQueue.global(qos: .userInteractive).async {
guard let image = UIImage(named: imageName) else {return}
DispatchQueue.main.async {
completion(image)
}
}
}
在tableView cellForRowAt 中调用这个:
loadImageAsync(imageName: "\(indexPath.row + 1).jpg") { (image) in
cell.cardImageView.image = image
}
但我在这种方法中可能会出现一个错误,即在快速滚动时,我可能会在一段时间内看到旧图像。如何修复此错误?
【问题讨论】:
-
@matt 为什么我的问题不投票?也许我应该添加更多信息?
-
老图显示一段时间是合理的,除非新图加载,旧图显示。在我看来,您可以使用占位符来显示,以防尚未加载新图像。
-
@matt 你能举个例子吗?因为我在网上搜索这个但没有任何帮助。
标签: ios swift uitableview