/ / Jak zwiększyć szybkość ładowania albumu - ios, obiektyw-c, photosframework

Jak zwiększyć szybkość ładowania albumów - ios, target-c, photosframework

Robię projekt, który musi pokazywać zdjęcia w albumie systemowym. Używam ViewController z UICollectionView aby wyświetlić wszystkie zdjęcia z ViewModel. ViewModel otrzyma zdjęcia w viewDidLoad metoda.

Ale gdy w albumie jest ponad tysiąc zdjęć, szybkość ładowania będzie naprawdę mała. Nie chcę ustawiać PHImageRequestOptions.synchronous do No ponieważ sprawi, że otrzymam niejasny obraz kciuka. Jak rozwiązać ten problem?

Oto kod:

- (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];
}];
}
}

Odpowiedzi:

0 dla odpowiedzi № 1

Nie możesz pokazać ich wszystkich naraz. Tak więc pomysł, aby pobrać je wszystkie z góry, jest głupi. Użyj PHCachingImageManager ... Ta sytuacja jest dokładnie tym, do czego służy!

https://developer.apple.com/library/ios/documentation/Photos/Reference/PHCachingImageManager_Class/index.html#//apple_ref/occ/cl/PHCachingImageManager