关于自定义相册相关的PhotoKit小结

本文介绍了在iOS中使用PhotoKit框架替代废弃的ALAsset框架来管理相册资源的方法。主要内容包括如何获取相册信息,如相册名称和图片数量,以及如何获取相册中的照片。示例代码展示了如何遍历相册集合和请求特定尺寸的图片。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ALAsset框架在iOS9.0后开始被废弃,取而代之的是iOS8.0版本中推出的PhotoKit框架

1、取出相册资源
用PHAssetCollection fetchAssetCollectionsWithType:subType:options 方法遍历返回PHFetchResult对象,然后获取相册的属性,collection.localizedTitle(相册名称),collection.estimatedAssetCount(相册图片数量)
2、取出相册里的照片
取相册里的图片时,首先要取出PHAsset对象,用PHAsset fetchAssetsInAssetCollection:options 方法遍历返回PHFetchResult对象,然后初始化PHCachingImageManager,在PHCachingImageManager的
requestImageForAsset 方法block中取出相册中的照片,图片的大小由传的参数决定

示例代码:
PHFetchResult *smartCollection = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];

PHFetchResult *collection = [PHCollectionList fetchTopLevelUserCollectionsWithOptions:nil];
[smartCollection enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
    PHAssetCollection *collection = (PHAssetCollection *)obj;
    NSLog(@"smart collection %@   %lu",[obj valueForKey:@"localizedTitle"],(unsigned long)collection.estimatedAssetCount);
}];

[collection enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
    PHAssetCollection *collection = (PHAssetCollection *)obj;
    NSLog(@"collection %@   %lu",collection.localizedTitle,(unsigned long)collection.estimatedAssetCount);
}];


PHCachingImageManager *manager = [[PHCachingImageManager alloc] init];

PHFetchResult *assets = [PHAsset fetchAssetsInAssetCollection:collection[0] options:nil];

[assets enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
    [manager requestImageForAsset:obj
                       targetSize:CGSizeMake(200, 200)
                      contentMode:PHImageContentModeAspectFill
                          options:nil
                    resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) {
                        NSLog(@"image  %@",result);
                    }];
}];
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值