2017-02-20 40 views
0

У меня возникают проблемы, когда у меня есть около 50 фотографий с различным расширением файла (jpg/png..etc) и примерно 3 мб на изображение, хранящееся в документеDirectory. Когда я пытаюсь загрузить их в представление коллекции, весь пользовательский интерфейс будет отставать при прокрутке. Я занимался этой проблемой в течение последних 2 дней и прочитал много вопросов о stackoverflow, связанных с просмотром коллекции laggy, но я все еще не могу решить эту проблему. Любая помощь приветствуется!Загрузка изображений из документаDirectory в 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