@主要用到的类
1PHAssetCollection:图片资源数组(代表着相簿数组)
作用:获取相簿资源数组
示例代码:
//获取相簿资源 PHFetchResult<PHAssetCollection *> *assetCollections = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];
2PHAsset 图片资源 (代表某个相册里所有图片的数组)
作用:获取某个相簿里的相片资源数组
示例代码
//2获得某个相簿中的PHAsset数组 PHFetchOptions *fetchOptions = [[PHFetchOptions alloc] init]; fetchOptions.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:NO]]; PHFetchResult<PHAsset *> *assetArr = [PHAsset fetchAssetsInAssetCollection:assetCollection options:fetchOptions];
3PHImageManager 图片管理者
作用:根据某个图片资源,获取到真实图片
示例代码
//获取图片 [[PHImageManager defaultManager] requestImageForAsset:asset targetSize:size contentMode:PHImageContentModeDefault options:options resultHandler:^(UIImage * img, NSDictionary * _Nullable info) { imageobj.image = img; [resultArr addObject:image]; }];
@经验楼
1对相簿相册进行增删操作,虽然是本地操作,不是延时的网络操作,却也是耗时操作,回调被放到子线程
导致的后果就是,刷新数据后要点一下,才能真正更新界面,需要dispatchAsync一下
2删除刷新界面时,注意还要到结果代理方法去刷新,否则往往刷不到最新的数据
3NSString *const UIImagePickerControllerMediaURL;// 视频的路径
NSString *const UIImagePickerControllerReferenceURL;// 原始选择项的URL