代碼:
- (NSMutableArray *)getAllPhoto{NSMutableArray *arr = [NSMutableArray array];// 所有智能相冊PHFetchResult *smartAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];for (NSInteger i = 0; i < smartAlbums.count; i++) {PHCollection *collection = smartAlbums[i];//遍歷獲取相冊if ([collection isKindOfClass:[PHAssetCollection class]]) {PHAssetCollection *assetCollection = (PHAssetCollection *)collection;PHFetchResult *fetchResult = [PHAsset fetchAssetsInAssetCollection:assetCollection options:nil];PHAsset *asset = nil;if (fetchResult.count != 0) {for (NSInteger j = 0; j < fetchResult.count; j++) {//從相冊中取出照片asset = fetchResult[j];PHImageRequestOptions *opt = [[PHImageRequestOptions alloc]init];opt.synchronous = YES;PHImageManager *imageManager = [[PHImageManager alloc] init];[imageManager requestImageForAsset:asset targetSize:PHImageManagerMaximumSize contentMode:PHImageContentModeAspectFill options:opt resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) {if (result) {[arr addObject:result];}}];}}}}//返回所有照片return arr;
由于此方法為同步方法 所以需要放在子線程中去執行 例如:
dispatch_async(dispatch_get_global_queue(0, 0), ^{NSMutableArray *arr = [self getAllPhoto];NSLog(@"完成%@ \n照片總數%ld", arr, arr.count);});?