相机与自定义视图

Cra*_*Dev 40 camera objective-c uiimagepickercontroller custom-view ios

我的应用程序使用相机,我想在相机预览中添加叠加.例如,我想在使用相机时使用相框,我也想为相机操作添加自定义条.请帮我做同样的事.

Dip*_*ani 56

您可能正在尝试使用UIImagePickerController.但我知道这个问题的解决方案.您可以使用AVCamCaptureManager和AVCamRecorder类轻松完成.苹果在其开发者网站一个演示程序构建这里.它被命名为AVCam.简单来说,当您单击打开相机时,它会调用负责打开iPhone相机并录制视频或捕获音频的类和方法.它调用UIImagePickerController调用的相同类.所以你的相机会打开并开始输入.

现在,如果您打开该AVCam项目的xib文件,您将找到一个小的UIView对象.此视图负责显示相机的Feed.您可以根据需要调整视图大小,摄像机的输入将显示在该区域中.您也可以根据自己的选择将框架图像放在其周围.

当我想调整相机的输入源并拍摄照片时,它对我有用.我希望它对你也有用.


Oli*_*ver 41

创建代码的UIImagePickerController,调整它的属性,添加覆盖到它,并与您的控制器,任何你想要的是覆盖控制:自定义控件,叠加图像等...

这给出了这样的东西:

self.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];
Run Code Online (Sandbox Code Playgroud)

OverlayViewController 是您必须编写的控制器,用于控制添加到叠加层中的所有内容.

pickerReference是您可以保留向相机发送订单的属性.例如,您可以从放置在叠加层上的UIButton的IBAction中调用以下内容:

[self.pickerReference takePicture];
Run Code Online (Sandbox Code Playgroud)

  • 在向多个问题发布复制和粘贴样板/逐字答案时要小心,这些问题往往被社区标记为"垃圾邮件".如果你这样做,那么通常意味着问题是重复的,所以要将它们标记为相反. (3认同)
  • 直接设置cameraOverlayView属性时,我遇到了自动布局问题.相反,我不得不使用`[self.picker.cameraOverlayView addSubview:self.overlay.view]` (2认同)