如何提高相册加载速度
Posted
技术标签:
【中文标题】如何提高相册加载速度【英文标题】:How to enhance the album-loading speed 【发布时间】:2016-09-06 03:42:45 【问题描述】:我正在做一个项目,需要显示系统相册中的照片。我使用带有UICollectionView
的 ViewController 来显示从 ViewModel 获取的所有照片。 ViewModel 将通过viewDidLoad
方法获取照片。
但是当相册中的照片超过一千张时,加载速度会很慢。我不想将PHImageRequestOptions.synchronous
设置为No
,因为它会让我得到一个不清楚的拇指图像。如何解决这个问题?
代码如下:
- (void)enumerateAssetsInAssetCollection:(PHAssetCollection *)assetCollection original:(BOOL)original
NSLog(@"%@", assetCollection.localizedTitle);
PHImageRequestOptions *options = [[PHImageRequestOptions alloc] init];
options.synchronous = YES;
options.resizeMode = PHImageRequestOptionsResizeModeExact;
options.deliveryMode = PHImageRequestOptionsDeliveryModeOpportunistic;
options.normalizedCropRect = CGRectMake(0, 0, kSCREEN_WIDTH/3, kSCREEN_WIDTH/3);
PHFetchResult<PHAsset *> *assets = [PHAsset fetchAssetsInAssetCollection:assetCollection options:nil];
for (PHAsset *asset in assets)
CGSize size = original ? CGSizeMake(asset.pixelWidth, asset.pixelHeight) : CGSizeMake(kSCREEN_WIDTH/3, kSCREEN_WIDTH/3);
[[PHImageManager defaultManager] requestImageForAsset:asset targetSize:size contentMode:PHImageContentModeAspectFill options:options resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info)
NSLog(@"%@", result);
[self.photoArray addObject:result];
];
【问题讨论】:
【参考方案1】:您不能一次全部显示它们。因此,一次性将它们全部取出的想法是愚蠢的。使用PHCachingImageManager...这种情况正是它的用途!
https://developer.apple.com/library/ios/documentation/Photos/Reference/PHCachingImageManager_Class/index.html#//apple_ref/occ/cl/PHCachingImageManager
【讨论】:
以上是关于如何提高相册加载速度的主要内容,如果未能解决你的问题,请参考以下文章