【发布时间】:2018-01-18 09:55:23
【问题描述】:
我想从手机中获取所有图像。在照片库中创建多个选择。我正在使用以下代码从手机中获取所有图像。它运行良好,但是当手机上有 1000 张图像时,需要更多时间来获取所有图像并显示在视图中。如何减少从手机获取所有图像的时间。
// get all images from photos
func getAllImagesFromPhotos() -> [Photos]?
{
let imgManager = PHImageManager.default()
let requestOptions = PHImageRequestOptions()
requestOptions.isSynchronous = true
let fetchOptions = PHFetchOptions()
fetchOptions.sortDescriptors = [NSSortDescriptor(key:"creationDate", ascending: true)]
let fetchResult = PHAsset.fetchAssets(with: PHAssetMediaType.image, options: fetchOptions)
var allImages = [Photos]()
for index in 0..<fetchResult.count
{
let asset = fetchResult.object(at: index) as PHAsset
imgManager.requestImage(for: asset, targetSize: CGSize(width:200,height:200), contentMode: .aspectFill, options: requestOptions, resultHandler: { (uiimage, info) in
if let image = uiimage
{
allImages.append(Photos(image: image, selected: false))
}
})
}
return allImages
}
【问题讨论】:
-
加载所有图像需要很长时间是有道理的,如果你多解释一下你想要实现的目标,可能会有更好的方法来完成这项任务,你是什么试图通过获取所有图片来完成?
-
从照片中选择多张图片
-
我认为您将不得不围绕加载大量图像需要很长时间的想法来设计您的应用程序(它也会占用大量内存)。您真的需要同时加载所有这些吗?
-
是的,我想加载所有图片,比如whatsapp,以便用户一次上传多张图片
-
为什么要重新发明轮子呢,iOS 有 UIImagePickerController 类可以做到这一点,它还会在用户滚动时加载图像,因此它不会立即加载所有内容,从而导致性能下降