我正在使用CollectionView来显示gif和png格式的图像。所有gif图像都正确加载,但是当我滚动CollectionView时,png图像不断被其他gif图像替换。
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "StickerCell", for: indexPath)as! StickerCell
let stickerString = String(describing: self.stickerArray[indexPath.row])
if (stickerString.hasSuffix(".gif")){
let url = self.stickerArray[indexPath.row]
if let data = try? Data(contentsOf: url){
let image = UIImage()
image.setGifFromData(data, levelOfIntegrity: 0.5)
cell.sticker.setGifImage(image)
}
} else {
let url = self.stickerArray[indexPath.row]
if let data = try? Data(contentsOf: url){
let image: UIImage = UIImage(data: data)!
cell.sticker.image = image
}
}
return cell
}
我也尝试过使用DispatchQueue.main.async,它也没用。
答案 0 :(得分:0)
每次加载集合视图单元格时,我认为下载图像数据并不是一个好主意。尝试使用https://github.com/onevcat/Kingfisher下载和缓存图像。您需要下载一次图像,然后图像将被缓存,这意味着下次滚动它将使用缓存的图像,您将不会再遇到此问题。