iOS 8 以后最简代码取相册图片

2020-09-13  本文已影响0人  東玖零

在网上找了几个帖子看了看,说得都比较复杂,还得下载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>。

上一篇下一篇

猜你喜欢

热点阅读