[iOS] photoKit获取所有照片

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[iOS] photoKit获取所有照片相关的知识,希望对你有一定的参考价值。

代码:

- (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);
    });?

以上是关于[iOS] photoKit获取所有照片的主要内容,如果未能解决你的问题,请参考以下文章

iOS PhotoKit 教程

iOS PhotoKit框架 详解

iOS PhotoKit:获取除全景图以外的所有智能相册

如何使用 PhotoKit 列出共享的照片流相册

Xamarin - 是不是有与适用于 Android 的 Photokit (iOS) 类似的框架,或者是获取图库中所有图像的文件流的好方法?

iOS 8、PhotoKit、PHAsset、唯一标识符