iOS从系统相册选取多张照片

之前写过UIImagePickerController调取系统相册图片(选取单张照片,多用于用户头像)

1.pod导入

pod 'CTAssetsPickerController'

2.添加头文件

#import

3.添加delegate
<CTAssetsPickerControllerDelegate>
4.实现

- (void)upLoading {

    [PHPhotoLibraryrequestAuthorization:^(PHAuthorizationStatus status){

        if (status !=PHAuthorizationStatusAuthorized)return;

        dispatch_async(dispatch_get_main_queue(), ^{

            CTAssetsPickerController *picker = [[CTAssetsPickerControlleralloc] init];

            picker.delegate =self;

            // 显示选择的索引

            picker.showsSelectionIndex =YES;

            // 设置相册的类型:相机胶卷 +自定义相册

            picker.assetCollectionSubtypes =@[

                                               @(PHAssetCollectionSubtypeSmartAlbumUserLibrary),

                                               @(PHAssetCollectionSubtypeAlbumRegular)];

            // 不需要显示空的相册

            picker.showsEmptyAlbums =NO;

            [selfpresentViewController:pickeranimated:YEScompletion:nil];

        });

    }];

}


-(BOOL)assetsPickerController:(CTAssetsPickerController *)picker shouldSelectAsset:(PHAsset *)asset

{

    NSInteger max =9;

    if (picker.selectedAssets.count >= max) {

        UIAlertController *alert = [UIAlertControlleralertControllerWithTitle:@"提示"message:[NSStringstringWithFormat:@"最多选择%zd张图片", max] preferredStyle:UIAlertControllerStyleAlert];

        [alert addAction:[UIAlertActionactionWithTitle:@"好的"style:UIAlertActionStyleDefaulthandler:nil]];

        [picker presentViewController:alertanimated:YEScompletion:nil];

        // 这里不能使用selfmodal别的控制器,因为此时self.view不在window

        returnNO;

    }

    returnYES;

}


-(void)assetsPickerController:(CTAssetsPickerController *)picker didFinishPickingAssets:(NSArray *)assets

{

    

    NSArray *array =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);

    NSString *documents = [arraylastObject];

    NSString *documentPath = [documentsstringByAppendingPathComponent:@"arrayXML.xml"];

    

    NSArray *dataArray = [NSArrayarrayWithArray:assets];

    

    

    [dataArray writeToFile:documentPathatomically:YES];

    

    

    

    NSArray *resultArray = [NSArrayarrayWithContentsOfFile:documentPath];

    NSLog(@"%@", documentPath);

    

    

    // 关闭图片选择界面

    [picker dismissViewControllerAnimated:YEScompletion:nil];

    

    // 遍历选择的所有图片

    self.plCollection.photoArray = assets;

    for (NSInteger i =0; i < assets.count; i++) {

        // 基本配置

        CGFloat scale = [UIScreenmainScreen].scale;

        PHImageRequestOptions *options = [[PHImageRequestOptionsalloc] init];

        options.resizeMode   =PHImageRequestOptionsResizeModeExact;

        options.deliveryMode =PHImageRequestOptionsDeliveryModeHighQualityFormat;

        

        PHAsset *asset = assets[i];

        CGSize size =CGSizeMake(asset.pixelWidth / scale, asset.pixelHeight / scale);

//        // 获取图片

        [[PHImageManagerdefaultManager] requestImageForAsset:assettargetSize:size contentMode:PHImageContentModeDefaultoptions:options resultHandler:^(UIImage *_Nullable result,NSDictionary *_Nullable info) {

            NSData *imageData =UIImageJPEGRepresentation([selfimageWithImageSimple:resultscaledToSize:CGSizeMake(200,200)], 0.5);

            [selfossUpload:imageData];


        }];

    }

}


你可能感兴趣的:(iOS,从相册选取多张照片)