美文网首页
iOS Photos相册

iOS Photos相册

作者: CaptainRoy | 来源:发表于2019-06-24 10:48 被阅读0次
    • 导入
    #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);
                
            }];
        }
    

    相关文章

      网友评论

          本文标题:iOS Photos相册

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