swift - UICollectionView 单元格图像在滚动时不断变化

标签 swift uicollectionview

我正在使用 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,它也不起作用。

最佳答案

我认为每次加载 Collection View 单元格时都下载图像数据不是一个好主意。尝试使用https://github.com/onevcat/Kingfisher用于下载和缓存图像。您需要下载一次图像,然后图像将被缓存,这意味着下次您滚动时它将使用缓存的图像,并且您将不会再遇到此问题。

关于swift - UICollectionView 单元格图像在滚动时不断变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49568507/

相关文章:

ios - 在 Swift 中集成 Amazon Simple Email Services API 时出现问题

ios - UICollectionView 单元格的水平重新排序

ios - UICollectionView 滚动到底部不显示整个项目

ios - 修改 Collection View 单元格内容的图层属性

ios - Swift:UICollectionView iOS 的一行中的单元格数量不同

arrays - 循环遍历数组以获取项目的索引 - swift

ios - Swiftui Pan Gesture 获取 View 的水平位置

ios - 可以自定义IB导航栏中提示字符串的字体吗?

ios - UITextField,当退出第一响应者时,导致奇怪的文本动画滚动

swift - UICollectionView 单元格宽度