I am trying to insert images into collectionView asynchronously because images make rendering slow. This code can insert images but some images are displayed twice. How can I set images in right place of 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")
}
}
}
}
}