一、调起手机相机
1.设置相机相册权限
2.添加代理
UINavigationControllerDelegate,UIImagePickerControllerDelegate
3.设置代理
//调起相机
- (void)goCamara{
UIImagePickerController *picker = [[UIImagePickerController alloc]init];
picker.delegate = self;
picker.allowsEditing = YES;//可编辑
//判断是否可以打开相机
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
[self presentViewController:picker animated:YES completion:nil];
}else{
NSLog(@"没有摄像头");
}
}
4.实现代理方法
#pragma mark - UIImagePickerControllerDelegate 使用相机delegate
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<UIImagePickerControllerInfoKey,id> *)info{
[picker dismissViewControllerAnimated:YES completion:^{
}];
UIImage *theImage = nil;
if (picker.sourceType == UIImagePickerControllerSourceTypeCamera) {
theImage = [info objectForKey:UIImagePickerControllerOriginalImage];
//对拍摄的照片进行操作
// [self.allImage addObject:theImage];
// [self.mainCollectionView reloadData];
}
}
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{
[self dismissViewControllerAnimated:YES completion:nil];
}
二、调起手机相册选择多张照片
1. pod 'CTAssetsPickerController' #从系统相册选取多张照片
2.导入头文件
#import <Photos/Photos.h>
#import <CTAssetsPickerController/CTAssetsPickerController.h>
3.添加代理
CTAssetsPickerControllerDelegate
4.设置代理
//调起手机相册图片
- (void)goPhotoes{
[PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
if (status != PHAuthorizationStatusAuthorized) return ;
dispatch_async(dispatch_get_main_queue(), ^{
CTAssetsPickerController *picker = [[CTAssetsPickerController alloc]init];
picker.delegate = self;
//显示选择的索引
picker.showsSelectionIndex = YES;
//设置相册的类型 : 相机胶卷+自定义相册
picker.assetCollectionSubtypes = @[@(PHAssetCollectionSubtypeSmartAlbumUserLibrary),@(PHAssetCollectionSubtypeAlbumRegular)];
//不需要显示空的相册
picker.showsEmptyAlbums = NO;
[self presentViewController:picker animated:YES completion:^{
}];
});
}];
}
5.实现代理方法
- (void)assetsPickerController:(CTAssetsPickerController *)picker didFinishPickingAssets:(NSArray *)assets{
NSArray *array = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documents = [array lastObject];
NSString *documentPath = [documents stringByAppendingPathComponent:@"arrayXML.xml"];
NSArray *dataAray = [NSArray arrayWithArray:assets];
[dataAray writeToFile:documentPath atomically:YES];
NSArray *resultArray = [NSArray arrayWithContentsOfFile:documentPath];
NSLog(@"%@",documentPath);
//关闭图片选择页面
[picker dismissViewControllerAnimated:YES completion:nil];
//遍历选择的所有图片
// self.plCollection.photoArray = assets;
// for (int i = 0; i < assets.count; i ++) {
// //基本配置
// CGFloat scale = [UIScreen mainScreen].scale;
// PHImageRequestOptions *options = [[PHImageRequestOptions alloc]init];
// options.resizeMode = PHImageRequestOptionsResizeModeExact;
// options.deliveryMode = PHImageRequestOptionsDeliveryModeHighQualityFormat;
//
// PHAsset *asset = assets[i];
// CGSize size = CGSizeMake(asset.pixelWidth/scale, asset.pixelHeight/scale);
//获取图片
// [[PHImageManager defaultManager]requestImageForAsset:asset targetSize:size contentMode:PHImageContentModeDefault options:options resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) {
// NSData *imageData = UIImageJPEGRepresentation(<#UIImage * _Nonnull image#>, <#CGFloat compressionQuality#>)
// }];
// }
}