调用系统相机使用 UIImagePickerController
首先遵理代理:
@interface HomeViewController ()<UIImagePickerControllerDelegate,UINavigationControllerDelegate>
- (IBAction)SystemCamera:(id)sender {
UIImagePickerController *pickerCon = [[UIImagePickerController alloc]init];
pickerCon.sourceType = UIImagePickerControllerSourceTypeCamera;
pickerCon.allowsEditing = NO;//是否可编辑
pickerCon.delegate = self;
[self presentViewController:pickerCon animated:YES completion:nil];
}
若是拍摄视频:
- (IBAction)SystemCamera:(id)sender {
UIImagePickerController *pickerCon = [[UIImagePickerController alloc]init];
pickerCon.sourceType = UIImagePickerControllerSourceTypeCamera;
pickerCon.mediaTypes = @[(NSString *)kUTTypeMovie];//设定相机为视频
pickerCon.cameraDevice = UIImagePickerControllerCameraDeviceRear;//设置相机后摄像头
pickerCon.videoMaximumDuration = 10;//最长拍摄时间
pickerCon.videoQuality = UIImagePickerControllerQualityTypeHigh;//拍摄质量
pickerCon.allowsEditing = NO;//是否可编辑
pickerCon.delegate = self;
[self presentViewController:pickerCon animated:YES completion:nil];
}
也可将二者合一,只需修改pickerCon.mediaTypes属性:
pickerCon.mediaTypes = @[(NSString *)kUTTypeMovie,(NSString *)kUTTypeImage];
关于相机视频的更多设置,可以参考http://blog.csdn.net/lc_1581835288/article/details/50471482
注意:使用kUTTypeMovie时,需添加头文件#import<MobileCoreServices/MobileCoreServices.h>
使用UIImagePickerController拍摄完成回调方法:
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info{
NSString *mediaType=[info objectForKey:UIImagePickerControllerMediaType];
if ([mediaType isEqualToString:(NSString *)kUTTypeImage]) {//如果是拍照
UIImage *image;
//如果允许编辑则获得编辑后的照片,否则获取原始照片
if (picker.allowsEditing) {
image=[info objectForKey:UIImagePickerControllerEditedImage];//获取编辑后的照片
}else{
image=[info objectForKey:UIImagePickerControllerOriginalImage];//获取原始照片
}
self.resultImgView.image = 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];
}