美文网首页
iOS 8 以后最简代码取相册图片

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

作者: 東玖零 | 来源:发表于2020-09-13 00:20 被阅读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>。

    相关文章

      网友评论

          本文标题:iOS 8 以后最简代码取相册图片

          本文链接:https://www.haomeiwen.com/subject/tmngektx.html