在网上找了几个帖子看了看,说得都比较复杂,还得下载Demo查看,简单总结记录一下。
我的想法很简单,系统相册的图片有很多张,for循环取出来即可,直接上代码。
// 获取权限
[PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
dispatch_async(dispatch_get_main_queue(), ^{
if (status == PHAuthorizationStatusAuthorized) {
// 获取相册图集
PHFetchResult<PHAssetCollection *> *collections = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeSmartAlbumUserLibrary options:nil];
for (PHAssetCollection *collection in collections) {
PHFetchResult<PHAsset *> *assets = [PHAsset fetchAssetsInAssetCollection:collection options:nil];
for (PHAsset *asset in assets) {
// 一般来说我们把这一步放真正在控件上放图片的时候,图片全取出来会崩哈~
PHImageRequestOptions *options = [[PHImageRequestOptions alloc] init];
options.synchronous = NO;// 是否同步获得图片
options.deliveryMode = PHImageRequestOptionsDeliveryModeFastFormat;// 图片质量
CGFloat scale = [UIScreen mainScreen].scale;
// 可根据控件大小来设置
CGSize size = CGSizeMake(100*scale, 100*scale);
weak_self
[[PHCachingImageManager defaultManager] requestImageForAsset:asset targetSize:size contentMode:PHImageContentModeDefault options:options resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) {
// 图片取到了
}];
}
}
} else {
[Common showToast:@"您还没有允许打开相册"];
}
});
}];
最核心的代码就在上方了,各位大神请自行封装。
最后别忘了,再文件头部导入#import <Photos/Photos.h>。
网友评论