当前位置: 移动技术网 > 移动技术>移动开发>IOS > iOS从系统相册选取多张照片示例代码

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

2019年07月24日  | 移动技术网移动技术  | 我要评论

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

    }];
  }
}

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网