首页 > 系统 > iOS > 正文

iOS从系统相册选取多张照片示例代码

2019-10-21 18:48:00
字体:
来源:转载
供稿:网友

之前写过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];    }];  }}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持VEVB武林网。


注:相关教程知识阅读请移步到IOS开发频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表