【问题标题】:How to set the camera size on a preview view layer如何在预览视图图层上设置相机大小
【发布时间】:2016-05-08 09:02:21
【问题描述】:

我使用以下代码在 iPhone 设备上显示相机。相机可以显示 UI,我可以拍照。但是,相机只显示在 previewLayer 的中间。如何让相机填满 AVCaptureVideoPreviewLayer 上的所有空间?我曾尝试使用 AVLayerVideoGravityResizeAspectFill 重力,但它会使图像变形。

self.session = AVCaptureSession()
        do {
            let device = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo)
            try self.videoInput = AVCaptureDeviceInput(device: device)
        } catch {

        }
        if ((self.session?.canSetSessionPreset(AVCaptureSessionPresetHigh)) != nil){
            self.session?.sessionPreset = AVCaptureSessionPresetHigh
        }
        self.stillImageOutput = AVCaptureStillImageOutput()

        self.stillImageOutput?.outputSettings = [AVVideoCodecKey:AVVideoCodecJPEG]
        if self.session!.canAddInput(self.videoInput){
            self.session?.addInput(self.videoInput)
        }
        if self.session!.canAddOutput(self.stillImageOutput){
            self.session?.addOutput(self.stillImageOutput)
        }

self.previewLayer = AVCaptureVideoPreviewLayer(session: self.session)
        //self.backView.frame = CGRectMake(0, 0, self.view.bounds.width,self.view.bounds.width)
        let viewLayer:CALayer = self.backView.layer
        viewLayer.masksToBounds = true
        let bounds:CGRect = viewLayer.bounds
        self.previewLayer?.frame = bounds
        self.previewLayer?.backgroundColor = UIColor.blackColor().CGColor
        self.previewLayer?.videoGravity = AVLayerVideoGravityResizeAspect//AVLayerVideoGravityResizeAspect
        self.backView.layer.addSublayer(self.previewLayer!)

下面是摄像头的截图。

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    我正在这样做:

    override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        videoPreviewLayer?.frame = previewView.layer.bounds
    }
    

    如果您在 viewDidLoad() 中执行此操作,您可能会得到错误的边界。

    【讨论】:

      【解决方案2】:

      尝试添加这个

      self.previewLayer?.frame = self.view.bounds //Or whatever size you want the previewLayer to fit. 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-02-26
        • 1970-01-01
        • 1970-01-01
        • 2015-05-23
        • 2011-04-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多