Я работаю с фреймворком фотографий в iOS, чтобы разработать наложение для моего приложения, которое работает подобно наложению WhatsApp. Чтобы получить доступ к изображениям изображений галереи пользователя, мне нужно использовать Фотографии и не могу уйти с помощью UIImagePickerController.PHCachingImageManager не кэширование Swift 2.3
Для того, чтобы лучше познакомиться с каркасом, я решил сначала создать свой собственный подборщик изображений, и я начал с загрузки изображений из своей галереи и размещения его в виде коллекции на простом экране. После того, как я получил активы, используя PHAsset.fetchAssets(with: .image, options: fetchOptions) as PHFetchResult<PHAsset>
Затем я использую эти активы в массиве и начать кэширование по умолчанию PHCachingManager следующим образом:
cachingImageManager.startCachingImages(for: self.assets,
targetSize: CGSize(width: 150.0, height: 150.0),
contentMode: .default,
options: nil)
В моей cellForItemAtIndexPath для CollectionView, я использую:
cachingImageManager.requestImage(for: assets[indexPath.row], targetSize: CGSize(width: 150.0, height: 150.0), contentMode: .default, options: nil, resultHandler: { (image, info) in
cell.imageView.image = image
})
Как вы можете видеть, в соответствии с документацией Apple я использую кеширование с точно такими же targetSize, contentMode и параметрами в обоих местах и как таковой, блок обратного вызова, в котором я устанавливал изображение, должен вызываться ровно один раз с высоким Quali образ.
Однако, если я перезагружу collectionView или даже при первой загрузке представления коллекции, вызов будет вызван дважды, один раз с изображением низкого качества, а во второй раз с высоким качеством изображения.
Я не могу не подумать, что это ошибка, поскольку я загрузил Apple's tutorial code для фреймворка фотографий, и он делает то же самое, даже если в документе конкретно говорится, что если мы отправим те же параметры, contentMode и targetSize для актива, получает вызов только один раз, когда он кэшируется. (Даже код учебника сначала загружает изображение низкого качества, за которым следует высокое качество, независимо от того, сколько раз вы перезагружаете коллекцию).
Любая помощь была бы чрезвычайно оценена, поскольку я новичок в кодировании AVFoundation и был потрясен этой проблемой.
Прошу прощения, если это было очень долго прочитано, но заблаговременно за помощь!
Попробуйте рамки Kingfisher для удобного использования изображений и получения стручка согласно вашей быстрой версии. –
Мне нужно использовать только изображения галереи, но мне не нужно ничего скачивать – Kunal