#import <Photos/Photos.h>
- 在plist文件中加入 Privacy - Photo Library Usage Description描述(否则会崩溃而且苹果审核也会不通过)
- 查看相册权限
/*
PHAuthorizationStatusNotDetermined = 0, // 用户尚未作出关于这个应用的选择。
PHAuthorizationStatusRestricted, // 此应用程序未被授权访问照片数据。
// 用户可能无法更改此应用程序的状态,可能是由于活动限制
// 比如家长控制。
PHAuthorizationStatusDenied, // 用户已明确拒绝此应用程序访问照片数据。
PHAuthorizationStatusAuthorized // 用户已授权此应用程序访问照片数据。
*/
[PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
if (status == PHAuthorizationStatusAuthorized) {
NSLog(@"有访问权限");
} else {
NSLog(@"无访问权限");
}
}];
获取全部相册
- 先拿到 Camera Roll 分类 包含所有相册
// 获得全部相片
PHFetchResult<PHAssetCollection *> *cameraRolls = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeSmartAlbumUserLibrary options:nil];
NSLog(@"cameraRolls - %lu",(unsigned long)cameraRolls.count); // 1
for (PHAssetCollection *assetCollection in cameraRolls) {
NSLog(@"assetCollection - %@",assetCollection);
}
PHAssetCollection *assetCollection = [cameraRolls lastObject];
NSLog(@"assetCollection - %@",assetCollection);
NSLog(@"title - %@",assetCollection.localizedTitle);
PHFetchResult<PHAsset *> *assets = [PHAsset fetchAssetsInAssetCollection:assetCollection options:NULL];
NSLog(@"assets - %@",assets);
PHImageRequestOptions *options = [[PHImageRequestOptions alloc] init];
options.synchronous = YES;// 同步获得图片, 只会返回1张图片
options.deliveryMode = PHImageRequestOptionsDeliveryModeOpportunistic;
options.resizeMode = PHImageRequestOptionsResizeModeFast;
for (PHAsset *asset in assets) {
NSLog(@" width - %lu height - %lu",(unsigned long)asset.pixelWidth,(unsigned long)asset.pixelHeight);
CGSize size = CGSizeMake(asset.pixelWidth, asset.pixelHeight);
// [[PHImageManager defaultManager] requestImageForAsset:asset targetSize:size contentMode:PHImageContentModeDefault options:options resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) {
//
// NSLog(@"result - %@",result);
// NSLog(@"info - %@",info);
//
// }];
[[PHCachingImageManager defaultManager] requestImageForAsset:asset targetSize:size contentMode:PHImageContentModeDefault options:options resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) {
NSLog(@"result - %@",result);
NSLog(@"info - %@",info);
}];
}
网友评论