#pragma mark - 相机调用拍照 - (void)didClickRightButton{ if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { UIImagePickerController * cameraPicker = [[UIImagePickerController alloc] init]; cameraPicker.delegate = self; cameraPicker.allowsEditing = YES; cameraPicker.sourceType = UIImagePickerControllerSourceTypeCamera; // 相机的调用为照相模式 cameraPicker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto; // 设置为NO则隐藏了拍照按钮 cameraPicker.showsCameraControls = YES; // 设置相机摄像头默认为前置 cameraPicker.cameraDevice = UIImagePickerControllerCameraDeviceFront; // 设置相机闪光灯开关 cameraPicker.cameraFlashMode = UIImagePickerControllerCameraFlashModeAuto; // 用来设置覆盖在你照相图像上,可以自定义位置或图片(类似美图秀秀加个小猫小狗小花修饰) //cameraPicker.cameraOverlayView // 用来修改拍照相框 //cameraPicker.cameraViewTransform [self presentViewController:cameraPicker animated:YES completion:nil]; [cameraPicker release]; } else { NSLog(@"当前设备不支持相机调用"); } } - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{ /*-------------------------------相机拍照--------------------------------------*/ if (picker.sourceType == UIImagePickerControllerSourceTypeCamera) { UIImage * image = [info objectForKey:UIImagePickerControllerOriginalImage]; _imageView.image = image; [self dismissViewControllerAnimated:YES completion:^{ }]; } else if (picker .sourceType == UIImagePickerControllerSourceTypePhotoLibrary) { /** * UIImagePickerControllerEditedImage 取得的是被编辑过的图片,需要allowsEditing设置为YES * UIImagePickerControllerOriginalImage 取得的是相册中原始图片 */ UIImage * image = [info objectForKey:UIImagePickerControllerOriginalImage]; _imageView.image = image; [self dismissViewControllerAnimated:YES completion:nil]; } /*-------------------------------相机录像--------------------------------------*/ if (picker.cameraCaptureMode == UIImagePickerControllerCameraCaptureModeVideo) { // 获得视频路径 NSURL *url = [info objectForKey:UIImagePickerControllerMediaURL]; // 存储视频(@selector里面的方法一定要是这种格式) UISaveVideoAtPathToSavedPhotosAlbum([url path], self, @selector(video:didFinishSavingWithError: contextInfo:), nil); [self dismissViewControllerAnimated:YES completion:nil]; }else if(picker.cameraCaptureMode == UIImagePickerControllerCameraCaptureModePhoto){ } } - (void)video:(NSString *)videoPath didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo{ NSLog(@"%s",__FUNCTION__); } #pragma mark - 相机调用拍视频 - (void)didClickLeftButton{ BOOL judge = [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]; if (judge) { UIImagePickerController * cameraPicker = [[UIImagePickerController alloc] init]; cameraPicker.delegate = self; cameraPicker.sourceType = UIImagePickerControllerSourceTypeCamera; // 视频录制的规定时间 // cameraPicker.videoMaximumDuration = 10; // 引入 MobileCoreServices.framework 库, 设置viedo依托的.media // 这句话必须放在设置cameraCaptureMode前面,涉及到一个API执行顺序问题 cameraPicker.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeMovie]; // 相机调用为录像模式 cameraPicker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModeVideo; [self presentViewController:cameraPicker animated:YES completion:nil]; } else { NSLog(@"当前设备不支持相机的调用"); } } - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{ [self presentViewController:cameraPicker animated:YES completion:nil]; NSLog(@"%s",__FUNCTION__); }
@细心的朋友可能会发现,明明设置里面是中文,调用的相机显示的标题仍然是英文,如何把如cancel->取消
这样就OK了