Ios Swift Gallery Library Проблема производительности, после загрузки изображения / списка видео, данные из ICloud - PullRequest
0 голосов
/ 17 апреля 2020

Я новичок в IOS, я использую стороннюю библиотеку для интеграции моего множественного выбора изображений / видео. ссылка на библиотеку https://github.com/hyperoslo/Gallery

Локальные изображения / видео отображаются достаточно быстро, но проблема в том, что когда я использую iCloud, они содержат более 500+ изображений, что занимает почти 1 минуту. Чтобы загрузить в первый раз, любое их решение уменьшит или почти уберет время загрузки.

Это мой снимок кода, может быть полезным

class MyGalleryViewController: UIViewController,     GalleryControllerDelegate,UITabBarControllerDelegate{
let gallery = GalleryController()
override func viewDidLoad() {
super.viewDidLoad()

    openGallery()     
}
private func openGallery(){
    gallery.delegate = self
    gallery.modalPresentationStyle = .fullScreen
    present(gallery, animated: true, completion: nil)
}
//Rest of galleryController function
}

Большое большое спасибо заранее.

1 Ответ

1 голос
/ 17 апреля 2020

Необходимо выполнить следующие шаги:

  • Получить PHAsset для изображения в iCloud
 PHAsset.fetchAssets(with: .image, options: PHFetchOptions())
    // Images on iCloud will be included
  • Запросить изображение для assets
let imageRequestOptions = PHImageRequestOptions()
imageRequestOptions.deliveryMode = .opportunistic
imageRequestOptions.isNetworkAccessAllowed = true // allowing iCloud image downloaded from network
imageRequestOptions.progressHandler = progressHandler // progressHandler is outer callback, may be called multiple times

PHCachingImageManager.default().requestImage(for: asset)
  • В дескрипторе обработки изображений PHAssetImageProgressHandler прогресс загрузки
let progressHandler: PHAssetImageProgressHandler = { (progress, _, stop, _) in
    cell.updateProgress(CGFloat(progress))
}

Ключ к изображению iCloud:

  1. PHImageRequestOptions .isNetworkAccessAllowed
  2. PHImageRequestOptions.progressHandler
...