Как заменить defaultImageManager на PHCacheImageManager - PullRequest
1 голос
/ 03 октября 2019

Я пытаюсь взять этот Пример проекта Apple и использовать PHCacheImageManager вместо PHImageManager по умолчанию.

В его нынешнем виде я не уверен, где первоначально кэшировать изображения или где удалять изображения, которые больше не нужны в кэше, когда пользователь прокручивает UICollectionView. После установки переменной imageManager в значение PHCacheImageManager я извлекаю начальный набор ресурсов примерно так:

    PHPhotoLibrary.requestAuthorization { (status: PHAuthorizationStatus) in
        if status == .authorized {
            let fetchOptions = PHFetchOptions()
            fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]
            self.fetchResults = PHAsset.fetchAssets(with: .image, options: fetchOptions)
            self.fetchResults?.enumerateObjects({asset, index, stop in
                self.assets.append(asset)
            })

            DispatchQueue.main.async {
                // Reload collection view once we've determined our Photos permissions.
                print("assets count: \(self.assets.count)")
                self.collectionView.reloadData()
            }
        } else {
            self.displayPhotoAccessDeniedAlert()
        }
    }

, но я не уверен, как изменить функции, которые будут иметь функциональность, аналогичную этой, посколькуНет установленного размера миниатюры, а добавленные и удаленные ресурсы зависят от прокрутки пользователя. Было бы правильно разместить код ниже в willDisplayCell и didEndDisplayingCell

imageManager.stopCachingImages(for: removedAssets,
                               targetSize: thumbnailSize, contentMode: .aspectFill, options: nil)
imageManager.startCachingImages(for: addedAssets,
                                   targetSize: thumbnailSize, contentMode: .aspectFill, options: nil)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...