iOS AVCaptureVideoPreviewLayer在UIView中没有显示?

前端之家收集整理的这篇文章主要介绍了iOS AVCaptureVideoPreviewLayer在UIView中没有显示?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
问题

我有一个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 image
AVCaptureVideoPreviewLayer *previewLayer = [AVCaptureVideoPreviewLayer layerWithSession:_captureSession];
previewLayer.frame = _cameraPreview.bounds;
[_cameraPreview.layer addSublayer:previewLayer];
原文链接:https://www.f2er.com/iOS/335339.html

猜你在找的iOS相关文章