为什么videoview宽度大小是一半?

时间:2017-03-20 18:23:53

标签: swift camera

在xcode中运行cameraApp,宽度大小未满

uiview上的

cameraview未满。

请帮帮我T_T

我也不会说英语,所以提问非常困难

    override func viewWillAppear(_ animated: Bool) {
    captureSession = AVCaptureSession()
    stillImageOutput = AVCapturePhotoOutput()

    captureSession.sessionPreset = AVCaptureSessionPreset1920x1080

    let device = AVCaptureDevice.defaultDevice(withMediaType: AVMediaTypeVideo)

    do {
        let input = try AVCaptureDeviceInput(device: device)

        if (captureSession.canAddInput(input)) {
            captureSession.addInput(input)

            if (captureSession.canAddOutput(stillImageOutput)) {
                captureSession.addOutput(stillImageOutput)
                captureSession.startRunning()

                previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
                previewLayer?.videoGravity = AVLayerVideoGravityResizeAspect
                previewLayer?.connection.videoOrientation = AVCaptureVideoOrientation.portrait

                cameraView.layer.addSublayer(previewLayer!)


                previewLayer?.position = CGPoint(x: self.cameraView.frame.width/2, y: self.cameraView.frame.height/2)
                previewLayer?.bounds = cameraView.bounds
            }
        }
    }
    catch {
        print(error)
    }
}

1 个答案:

答案 0 :(得分:0)

如果我使用您的代码并将previewLayer添加到我的主视图中,我会以纵向显示全尺寸相机视图,但会在横向上显示半尺寸相机视图。

所以,isuse可能在于你如何设置cameraView,或者它可能是其他东西。我不能肯定。检查cameraView的大小和范围,看看它是如何设置的。

此外,videoGravity的{​​{1}}属性控制预览的显示方式。您将其设置为previewLayer,这将适合图层范围内的视频。如果AVLayerVideoGravityResizeAspect设置正确,则可以尝试使用cameraView之类的其他设置来查看是否可以获得所需的结果。