将图像从documentDirectory加载到UICollectionView - 滚动时滞后

时间:2017-02-20 21:44:03

标签: swift xcode scroll swift3 uicollectionview

我遇到的问题是我有大约50张带有各种文件扩展名的照片(jpg / png..etc),每张图片大约3mb,存储在documentsDirectory中。当我尝试将它们加载到集合视图时,整个UI在滚动时会滞后。我在过去2天遇到过这个问题,并且已经阅读了许多处理滞后收集视图的stackoverflow问题,但我仍无法解决这个问题。任何帮助表示赞赏!

这是我配置我的collectionView单元格的代码:

DispatchQueue.global(qos: .userInteractive).async { [unowned self] in
    let image = UIImage(contentsOfFile: url)

        DispatchQueue.main.async {
            self.cellImage.image = image
        }
    }

令人困惑的部分是这段代码可以很好地显示视频缩略图。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

问题可能是,虽然从后台线程加载UIImage,但在UIImageView尝试绘制图像之前,图像不会被解压缩,这发生在主线程上。

您可以在后台线程上添加以下代码,以便在将图像传递给主线程之前对其进行解压缩:

let context = UIGraphicsBeginImageContext(CGSize(width: 1, height: 1))
image.draw(at: .zero)
UIGraphicsEndImageContext()