2017-02-20 57 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