您的位置:首页 > 移动开发 > IOS开发

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

2017-03-01 11:27 337 查看
之前写过UIImagePickerController调取系统相册图片(选取单张照片,多用于用户头像)

1.pod导入

pod 'CTAssetsPickerController'

2.添加头文件

#import
<CTAssetsPickerController/CTAssetsPickerController.h>

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];

        //
这里不能使用self来modal别的控制器,因为此时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];

        }];

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐