在iOS上创build方形视图的自定义相机

我正尝试在iOS上创build一个自定义的相机体验,下面的代码片段就像我一样。 基本上我想通常的相机视图(即与以下button:捕捉,闪光灯,网格,前/后,取消)。 但正常的相机和我的唯一区别是,我想要一个正方形的预览表面 ; 不是一个矩形。 然后,你看到的是你所得到的(所见即所得),这样就没有必要的裁剪。 因为用户将首先采取方形图片。

我也一直在看图书馆https://github.com/danielebogo/DBCamera,但我不知道如何定制它到我的最后。 任何帮助? 谢谢。

我的代码如此:

- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. //Capture Session AVCaptureSession *session = [[AVCaptureSession alloc]init]; session.sessionPreset = AVCaptureSessionPresetPhoto; //Add device AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; //Input AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil]; if (!input) { NSLog(@"No Input"); } [session addInput:input]; //Output AVCaptureVideoDataOutput *output = [[AVCaptureVideoDataOutput alloc] init]; [session addOutput:output]; output.videoSettings = @{ (NSString *)kCVPixelBufferPixelFormatTypeKey : @(kCVPixelFormatType_32BGRA) }; //Preview Layer AVCaptureVideoPreviewLayer *previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session]; UIView *myView = self.view; previewLayer.frame = myView.bounds; previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill; [self.view.layer addSublayer:previewLayer]; //Start capture session [session startRunning]; } 

这是Xcode中单个视图项目中唯一的自定义代码

你有两个select来做你想做的,或者坚持和定制一个UIImagePickerController ,或者使用AVFoundation创build你自己的。

UIImagePickerController确实提供了一些定制选项,这个类似的线程在这个链接上有一些很好的信息。

如果您仍然想自己创build,我build议您前往Apple文档并查看名为AVCam : link的演示项目。 但是,它比你可能需要更深入,所以我可以推荐这个video教程: 链接 。

如果是最后一个选项,我想提一下,要使“实际相机”适合您的previewLayer的框架,您可以将AVCaptureVideoPreviewLayer上的AVLayerVideoGravityResizeAspectFill设置为AVLayerVideoGravityResizeAspectFill

使用自定义相机可能有点痛苦,但它会带来红利,因为您将真正能够自定义您的应用程序体验。

最简单的方法是使用TGCameraViewController 。

使用这个TGCameraViewController ,你可以编辑整个相机视图。 此外,它还提供以下function:

  • 轻松访问相册(相机胶卷)
  • 闪光自动,closures和开启
  • 焦点
  • 前面和后面照相机

您也可以参考AVCamManual:扩展AVCam使用手动捕获文档来创build自定义相机。