调用系统相机使用 UIImagePickerController
首先遵理代理:
@interface HomeViewController ()<UIImagePickerControllerDelegate,UINavigationControllerDelegate>
- (IBAction)SystemCamera:(id)sender {
UIImagePickerController *pickerCon = [[UIImagePickerController alloc]init];
= UIImagePickerControllerSourceTypeCamera;
= NO;//是否可编辑
= self;
[self presentViewController:pickerCon animated:YES completion:nil];
}
若是拍摄视频:
- (IBAction)SystemCamera:(id)sender {
UIImagePickerController *pickerCon = [[UIImagePickerController alloc]init];
= UIImagePickerControllerSourceTypeCamera;
= @[(NSString *)kUTTypeMovie];//设定相机为视频
= UIImagePickerControllerCameraDeviceRear;//设置相机后摄像头
= 10;//最长拍摄时间
= UIImagePickerControllerQualityTypeHigh;//拍摄质量
= NO;//是否可编辑
= self;
[self presentViewController:pickerCon animated:YES completion:nil];
}
也可将二者合一,只需修改属性:
= @[(NSString *)kUTTypeMovie,(NSString *)kUTTypeImage];
关于相机视频的更多设置,可以参考/lc_1581835288/article/details/50471482
注意:使用kUTTypeMovie时,需添加头文件#import<MobileCoreServices/>
使用UIImagePickerController拍摄完成回调方法:
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info{
NSString *mediaType=[info objectForKey:UIImagePickerControllerMediaType];
if ([mediaType isEqualToString:(NSString *)kUTTypeImage]) {//如果是拍照
UIImage *image;
//如果允许编辑则获得编辑后的照片,否则获取原始照片
if () {
image=[info objectForKey:UIImagePickerControllerEditedImage];//获取编辑后的照片
}else{
image=[info objectForKey:UIImagePickerControllerOriginalImage];//获取原始照片
}
= image;
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);//保存到相簿
}else if([mediaType isEqualToString:(NSString *)kUTTypeMovie]){//如果是录制视频
NSLog(@"video...");
NSURL *url=[info objectForKey:UIImagePickerControllerMediaURL];//视频路径
NSString *urlStr=[url path];
if (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum(urlStr)) {
//保存视频到相簿,注意也可以使用ALAssetsLibrary来保存
UISaveVideoAtPathToSavedPhotosAlbum(urlStr, self, @selector(video:didFinishSavingWithError:contextInfo:), nil);//保存视频到相簿
}
}
[picker dismissViewControllerAnimated:YES completion:nil];
}