gpt4 book ai didi

ios - 如何为从 Photos Framework 获取的 PHAsset 添加分页?

转载 作者:搜寻专家 更新时间:2023-11-01 06:01:44 25 4
gpt4 key购买 nike

我正在尝试使用照片框架从 cameraRoll 获取所有照片,但是从 cameraRoll 获取所有照片需要花费大量时间。

他们是否要为其添加分页?所以我可以在滚动时获取。

 var images = [UIImage]()
var assets = [PHAsset]()

fileprivate func assetsFetchOptions() -> PHFetchOptions {
let fetchOptions = PHFetchOptions()

//fetchOptions.fetchLimit = 40 //uncomment to limit photo

let sortDescriptor = NSSortDescriptor(key: "creationDate", ascending: false)
fetchOptions.sortDescriptors = [sortDescriptor]
return fetchOptions
}

fileprivate func fetchPhotos() {
let allPhotos = PHAsset.fetchAssets(with: .image, options: assetsFetchOptions())

DispatchQueue.global(qos: .background).async {
allPhotos.enumerateObjects({ (asset, count, stop) in
//print(count)

let imageManager = PHImageManager.default()
let targetSize = CGSize(width: 200, height: 200)
let options = PHImageRequestOptions()
options.isSynchronous = true
imageManager.requestImage(for: asset, targetSize: targetSize, contentMode: .aspectFit, options: options, resultHandler: { (image, info) in

if let image = image {
self.images.append(image)
self.assets.append(asset)
}

if count == allPhotos.count - 1 {
DispatchQueue.main.async {
self.collectionView?.reloadData()
}
}

})

})
}
}

最佳答案

allPhotos 的类型为 PHFetchResult < PHAsset > 这是一个懒惰的集合,即它实际上不会出去获取照片,直到你要求它,这就是 .enumerateObjects 正在做的事情。您可以使用 subscript operator 一次抓取一张照片或使用 objects(at:) 获取一系列对象根据需要翻阅集合。

关于ios - 如何为从 Photos Framework 获取的 PHAsset 添加分页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47936192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com