一旦AVCaptureSession开始运行,我就手动创建AVCaptureVideoPreviewLayer(一种CALayer)并将其添加到UIView中,如下所示:

 func captureSessionStartedRunning(session:AVCaptureSession?) {
    if let captureSession = session {
        if let previewLayer = AVCaptureVideoPreviewLayer.init(session: captureSession) {
            previewLayer.frame = self.view.bounds
            self.view.layer.addSublayer(previewLayer)
            previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill
        }
    }
}

我没有使用大小类自动旋转的经验,所以有人可以告诉我在这里处理自动旋转的最简单方法是什么?

最佳答案

override :

override func viewWillLayoutSubviews() {
    super.viewWillLayoutSubViews()
    previewLayer.frame = self.view.bounds
}

每当您的视图布局更改时,它将图层的大小更新为视图的大小。

您可能还需要将PreviewLayer的.videoGravity更改为.aspectFill

10-08 12:12