2017-02-20 48 views
0

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

这是我的代码来配置我的CollectionView细胞:

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

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

混乱的部分是这个代码只是正常显示视频的缩略图。

任何帮助,非常感谢!

+0

我认为你的问题的原因在照片本身我的建议是使用一些图像兑现API像[Alamofire](https://github.com/Alamofire/Alamofire)或[sd-image](https://github.com/rs/SDWebImage)。 – Arashk

+0

尝试使用https://github.com/rs/SDWebImage –

回答

0

问题可能是,尽管您从后台线程加载UIImage,但图像不会解压缩,直到UIImageView尝试绘制它,这发生在主线程上。

您可以在后台线程中添加以下代码,你将它传递给主线程之前解压缩图像:

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

我尝试过这种变体,但它似乎让我的应用程序更快崩溃......甚至没有给我任何调试错误。内存过载也许... – Soja