自定义视图的相机

我的应用程序使用相机,我想添加覆盖在相机预览。 例如,我想在使用相机时使用相框,我也想为相机操作添加一个自定义栏。 请帮助我也这样做。

  • 使用UIImagePickerController时,iOS 10错误 <私人>
  • 上传后iOS iOS UIImagePickerController结果图像方向
  • presentModalViewController:Animated已在ios6中弃用
  • Swift PNG图像以不正确的方向保存
  • 设置UIImagePickerController“移动和缩放”裁剪框的尺寸
  • UIImagePicker允许Editing卡在中心
  • UIImagePickerController错误:快照未呈现的视图会导致iOS 7中的空快照
  • iOS 8 SDK:模态UIWebView和相机/图像select器
  • 4 Solutions collect form web for “自定义视图的相机”

    您可能正在尝试使用UIImagePickerController。 但我知道你的问题的一个解决scheme。 您可以使用AVCamCaptureManager和AVCamRecorder类轻松完成。 苹果公司在开发者网站上有一个演示程序。 它被命名为AVCam。 简单的说,当你点击打开摄像头时,它会调用负责打开iPhone摄像头并录制video或捕获audio的类和方法。 它调用由UIImagePickerController调用的相同的类。 所以你的相机会打开并开始input。

    现在,如果你打开AVCam项目的xib文件,你会发现一个小的UIView对象。 此视图负责显示相机的供稿。 您可以根据所需的尺寸调整视图大小,并在相当多的区域显示相机的input。 你也可以根据你的select把框架图像放在它周围。

    当我想调整相机的input信号并捕捉照片时,它适用于我。 我希望它也适合你。

    从代码创build一个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]; 

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

    pickerReference是一个你可以继续发送订单给相机的属性。 例如,您可以从放置在覆盖层上的UIButton中调用以下IBAction:

     [self.pickerReference takePicture]; 

    阅读UIImagePickerController类参考 ,这是正确的在文档中…

    有这个属性,尤其是cameraOverlayViewshowsCameraControls属性。

    因此,您可以隐藏控件,提供自定义覆盖视图,并为此自定义视图添加子视图以添加自定义button,框架等。

    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