我正在尝试将图像异步插入collectionView,因为图像会使渲染变慢。该代码可以插入图像,但是某些图像显示两次。如何在collectionView的正确位置设置图像?
class fooCollectionViewCell {
imageView.loadImageAsynchronously(url: "https://~")
}
extension UIImageView {
func loadImageAsynchronously(url: URL?) -> Void {
if url == nil {
self.image = UIImage(named: "no_image")
return
}
DispatchQueue.global().async {
do {
let imageData: Data? = try Data(contentsOf: url!)
DispatchQueue.main.async {
if let data = imageData {
self.image = UIImage(data: data)
} else {
self.image = UIImage(named: "no_image")
}
}
} catch {
DispatchQueue.main.async {
self.image = UIImage(named: "no_image")
}
}
}
}
}