之前寫過UIImagePickerController調取系統相冊圖片(選取單張照片,多用於用戶頭像)
1.pod導入
pod 'CTAssetsPickerController'
2.添加頭文件
#import <CTAssetsPickerController/CTAssetsPickerController.h>
- (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];
}];
}
}