iOS PhotoKit

来源:互联网 发布:素材软件 编辑:程序博客网 时间:2024/04/27 03:35

PhotoKit的基本构成:

PHAsset:代表照片库中的一个资源,和ALAsset类似, 通过PHAsset可以获取和保存资源。

PHFetchOptions:获取资源时的参数,可以传nil,即使用系统默认值。

PHAssetCollection:PHCollection的子类,表示一个相册或者一个时刻,或者是一个智能相册。

PHFetchResult:表示一系列的资源结果集合,也可以是相册的集合,从PHCollection的类方法中获得。

PHImageManager:用于处理资源的加载,加载图片的过程带有缓存处理,可以通过传入一个PHImageRequestOptions控制资源的输出尺寸等规格

PHImageRequestOptions:控制加载图片时的一些参数

PhotoKit的机制

1.获取资源

示例代码

//筛选规则    PHFetchOptions * option =[[PHFetchOptions alloc]init];    //排序方式    option.sortDescriptors =@[[NSSortDescriptor sortDescriptorWithKey:@"modificationDate" ascending:NO]];    //列出所有相册智能相册    PHFetchResult * smartAlbums =[PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];    // 列出所有用户创建的相册//    PHFetchResult *smartAlbums = [PHCollectionList fetchTopLevelUserCollectionsWithOptions:nil];    for (int i=0; i<smartAlbums.count; i++) {        //获取一个相册        PHCollection * collection =smartAlbums[i];        if ([collection isKindOfClass:[PHAssetCollection class]]) {            //每一个相册(assetcollection)            PHAssetCollection * assetcollection =(PHAssetCollection *)collection;            //从每一个相册中获取到中真正的资源            //相册里多有资源(fetResult)            PHFetchResult * fetResult =[PHAsset fetchAssetsInAssetCollection:assetcollection options:nil];            if (fetResult.count>0) {                [assetArray addObject:fetResult];                [nameArray addObject:assetcollection.localizedTitle];                //获取封面图片,就是第一张图片                PHAsset *asset = (PHAsset *)fetResult.firstObject;                PHImageRequestOptions *options = [[PHImageRequestOptions alloc] init];                //默认的是异步加载,这里选择了同步 因为只获取一张照片,不会对界面产生很大的影响                options.synchronous = YES;                PHImageManager * manager =[PHImageManager defaultManager];                [manager requestImageForAsset:asset targetSize:PHImageManagerMaximumSize contentMode:PHImageContentModeDefault options:options resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) {                    [fsArray addObject:result];                }];            }        }    }
0 0
原创粉丝点击