iOS AVCaptureVideoPreviewLayer在UIView中没有显示?

iOS AVCaptureVideoPreviewLayer在UIView中没有显示?,第1张

概述问题 我有一个sample application from Apple (SquareCam),我用它作为参考,为相机创建一个自定义界面.我正在使用AVFoundation框架.如果我从Apple构建并运行该项目,该应用程序将按预期运行.但是,如果我从该项目中获取相同的代码并将其放在Xcode中的新项目中,则不会显示视频预览. 我已将代码简化为运行视频预览图层的基本组件.同样,此代码在Apple 问题

我有一个sample application from Apple (SquareCam),我用它作为参考,为相机创建一个自定义界面.我正在使用AVFoundation框架.如果我从Apple构建并运行该项目,该应用程序将按预期运行.但是,如果我从该项目中获取相同的代码并将其放在Xcode中的新项目中,则不会显示视频预览.

我已将代码简化为运行视频预览图层的基本组件.同样,此代码在Apple(SquareCam)项目中运行良好,但不会显示在我的新项目中.

代码

- (voID)setupAVCapture {    NSError *error = nil;    AVCaptureSession *session = [AVCaptureSession new];    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)        [session setSessionPreset:AVCaptureSessionPreset640x480];    else        [session setSessionPreset:AVCaptureSessionPresetPhoto];    // Select a vIDeo device,make an input    AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVIDeo];    AVCaptureDeviceinput *deviceinput = [AVCaptureDeviceinput deviceinputWithDevice:device error:&error];    if ([session canAddinput:deviceinput])        [session addinput:deviceinput];    prevIEwLayer = [[AVCaptureVIDeoPrevIEwLayer alloc] initWithSession:session];    [prevIEwLayer setBackgroundcolor:[[UIcolor blackcolor] CGcolor]];    [prevIEwLayer setVIDeoGravity:AVLayerVIDeoGravityResizeAspect];    CALayer *rootLayer = [prevIEwVIEw layer];    [rootLayer setMasksToBounds:YES];    [prevIEwLayer setFrame:[rootLayer bounds]];    [rootLayer addSublayer:prevIEwLayer];    [session startRunning];}- (voID)vIEwDIDLoad {    [super vIEwDIDLoad];    [self setupAVCapture];}

我尝试过什么?

我已正确设置所有插座.我在构建阶段拥有所有框架库.这两个项目都在使用故事板.奇怪的是,我能够从相机捕捉图像,甚至可以从前到后切换光源.但预览不会显示. Apple项目未设置ARC.所以,我更新了项目以使用ARC.再次,在Apple项目中运行良好,但在新项目中运行不佳.

思考?

有关问题的任何想法?是否有可能导致此问题的项目设置?

解决方法 有同样的问题和关键是将AVCaptureVIDeoPrevIEwLayer的框架设置为UIVIEw的边界:
// Setup camera prevIEw imageAVCaptureVIDeoPrevIEwLayer *prevIEwLayer = [AVCaptureVIDeoPrevIEwLayer layerWithSession:_captureSession];prevIEwLayer.frame = _cameraPrevIEw.bounds;[_cameraPrevIEw.layer addSublayer:prevIEwLayer];
总结

以上是内存溢出为你收集整理的iOS AVCaptureVideoPreviewLayer在UIView中没有显示?全部内容,希望文章能够帮你解决iOS AVCaptureVideoPreviewLayer在UIView中没有显示?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1109041.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存