以编程方式在AVCaptureVideoPreviewLayer上添加叠加层

时间:2017-12-20 23:26:11

标签: ios uiview autolayout

我正在尝试在AVCaptureVideoPreviewLayer上添加叠加视图。这是我的视图层次结构 -

Preview Container (UIView)
   AVCaptureVideoPreviewLayer
       Overlay (UIView)

我在viewDidLoad()中配置了AVCaptureVideoPreviewLayer,并将其viewDidLayoutSubviews()中的帧更新为self.videoPreviewLayer.frame = self.previewContainer.bounds,以便在渲染期间预览容器的边界发生更改时更新其帧。一切都很好。

叠加层视图也在viewDidLoad 中进行配置,如下所示:

    let overlayView = UIView(frame: self.previewContainer.bounds)
        overlayView.backgroundColor = UIColor.white.withAlphaComponent(0.7)
        overlayView.autoresizingMask = [.flexibleHeight,.flexibleWidth]
        self.previewContainer.addView(overlayView)

然而,叠加视图并未完全覆盖预览容器,但实际上更短。经过一些调试后,我发现在创建过程中,由于它的帧被设置为previewContainer的边界,因此它的高度较短,并且在viewDidLayoutSubviews()之后重新绘制previewContainer的帧时不会更新。我似乎通过更新AVCaptureVideoPreviewLayer中的帧来解决viewDidLayoutSubviews()的这个确切问题(如上所示)。如何正确绘制overlayView?我在这里做错了什么?

0 个答案:

没有答案