我的应用程序使用相机,我想在相机预览上添加覆盖层。例如,当我使用相机时,我想使用一个图片框架,并且我想为相机操作添加自定义工具栏。请帮助我完成这个任务。
我的应用程序使用相机,我想在相机预览上添加覆盖层。例如,当我使用相机时,我想使用一个图片框架,并且我想为相机操作添加自定义工具栏。请帮助我完成这个任务。
AVCamPreviewView
调整为正方形。视图正确地调整大小,但在AVCamPreviewView
内部,摄像头的反馈显示在一个小矩形内。好像某个地方设置了宽高比,但我找不到覆盖它的位置。 - Katedral Pillon[(AVCaptureVideoPreviewLayer *)[self.previewView layer] setVideoGravity:AVLayerVideoGravityResizeAspectFill];
这确保了所显示的预览被裁剪成我们想要的样子。但输出视频还没有被裁剪。我猜我缺少了什么。 - Roshitself.picker = [[UIImagePickerController alloc] init];
self.picker.sourceType = UIImagePickerControllerSourceTypeCamera;
self.picker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto;
self.picker.cameraDevice = UIImagePickerControllerCameraDeviceRear;
self.picker.showsCameraControls = NO;
self.picker.navigationBarHidden = YES;
self.picker.toolbarHidden = YES;
self.picker.wantsFullScreenLayout = YES;
// Insert the overlay
self.overlay = [[OverlayViewController alloc] initWithNibName:@"Overlay" bundle:nil];
self.overlay.pickerReference = self.picker;
self.picker.cameraOverlayView = self.overlay.view;
self.picker.delegate = self.overlay;
[self presentModalViewController:self.picker animated:NO];
OverlayViewController
是您必须编写以控制添加到叠加层上的所有内容的控制器。
pickerReference
是您可以保留的属性,用于向相机发送指令。例如,您可以从放置在叠加层上的UIButton发出的IBAction中调用以下内容:
[self.pickerReference takePicture];
cameraOverlayView
属性时,我在自动布局方面遇到了问题。相反,我不得不使用[self.picker.cameraOverlayView addSubview:self.overlay.view]
。 - Hari HonorcameraOverlayView
和 showsCameraControls
属性。Oliver的答案的Swift 3版本:
self.picker = UIImagePickerController()
self.picker.sourceType = .camera
self.picker.cameraCaptureMode = .photo
self.picker.cameraDevice = .rear
self.picker.showsCameraControls = false
self.picker.isNavigationBarHidden = true
self.picker.isToolbarHidden = true
// Insert the overlay
self.overlayViewController = self.storyboard?.instantiateViewController(withIdentifier: "Overlay") as! OverlayViewController
self.picker.cameraOverlayView = self.overlayViewController.view
self.picker.delegate = self.overlayViewController
self.navigationController?.present(self.picker, animated: true, completion: nil)
OverlayViewController协议:
class OverlayViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate