圖片多選的實現(xiàn) 分為兩部分
1 調(diào)用相機拍照添加圖片
2 打開相冊添加圖片
1 使用相機添加圖片
-(void)addimagePicker{
// 遵守UIImagePickerControllerDelegate 協(xié)議創(chuàng)建imagePicker對象
UIImagePickerController *pickercontroller = [[UIImagePickerController alloc]init];
pickercontroller.allowsEditing = YES ;
pickercontroller.delegate = self ;
_pickercontroller = pickercontroller ;
}
調(diào)用相機時進行如下設置
_pickercontroller.sourceType = UIImagePickerControllerSourceTypeCamera ;
// 默認是打開相機 也可以設置為錄制視頻
_pickercontroller.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto ;
[self presentViewController:_pickercontroller animated:YES completion:nil];
實現(xiàn)imagePicker 的代理方法(拍照完成獲取image)
// 用戶選中某條媒體信息之后的處理
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info{
// 獲取媒體類型(相機 or 相冊 or 視頻 )
NSString *mediatype = [info objectForKey:UIImagePickerControllerMediaType];
if ([mediatype isEqualToString:@"public.image"]) {
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
// 將拍好的圖片存入系統(tǒng)相冊
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
// 對圖片數(shù)據(jù)進行壓縮
NSData *data = UIImageJPEGRepresentation(image, 0.2);
UIImage *resultimage = [[UIImage alloc]initWithData:data];
}
打開相冊添加圖片
使用第三方QBImagePicker 實現(xiàn)
1 遵守協(xié)議
QBImagePickerControllerDelegate
2 創(chuàng)建圖片選擇器對象
-(void)addQBImagePicker{
QBImagePickerController *imagePickerController = [QBImagePickerController new];
imagePickerController.delegate = self;
imagePickerController.mediaType = QBImagePickerMediaTypeAny;
imagePickerController.allowsMultipleSelection = 20;
imagePickerController.showsNumberOfSelectedAssets = YES;
_qbimagepicker = imagePickerController ;
}
3 實現(xiàn)代理方法
- (void)qb_imagePickerController:(QBImagePickerController *)imagePickerController didFinishPickingAssets:(NSArray *)assets
{
PHImageRequestOptions *options = [[PHImageRequestOptions alloc] init];
options.deliveryMode = PHImageRequestOptionsDeliveryModeHighQualityFormat;
for (PHAsset *asset in assets) {
[[PHImageManager defaultManager] requestImageForAsset:asset targetSize:[UIScreen mainScreen].bounds.size contentMode:PHImageContentModeAspectFit options:options resultHandler:^(UIImage *result, NSDictionary *info) {
NSDictionary *dic = @{@"image":result,@"isselect":@"0"};
[_selectArr addObject:dic];
if (_selectArr.count == assets.count) {
// 先確定范圍 range
NSRange range = NSMakeRange(_dataArr.count-1,_selectArr.count);
// 創(chuàng)建一個indexset對象
NSIndexSet *set = [NSIndexSet indexSetWithIndexesInRange:range];
// 插入數(shù)組中的元素
[_dataArr insertObjects:_selectArr atIndexes:set];
[_selectArr removeAllObjects];
[_collectionView reloadData];
}
}];
}
[self dismissViewControllerAnimated:YES completion:NULL];
}
- (void)qb_imagePickerControllerDidCancel:(QBImagePickerController *)imagePickerController
{
[self dismissViewControllerAnimated:YES completion:NULL];
}