iOS從系統相冊選取多張照片

之前寫過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];

        // 這裏不能使用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];


        }];

    }

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章