微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法使用 StoryBoard 在 AVCaptureVideoPreviewLayer 上添加视图?

如何解决无法使用 StoryBoard 在 AVCaptureVideoPreviewLayer 上添加视图?

我在 SO 上看到了关于此的其他问题,但我的问题不同,因为我正在寻找使用先前使用故事板创建的结构的解决方案。

我需要在 AVCaptureVideoPreviewLayer 上有一个 StackView

我有这样的看法:

enter image description here

我需要以某种方式创建一个 AVCaptureVideoPreviewLayer,将这一层置于您在上一张图片中看到的 Stack Control 之下。

我的 AVCaptureVideoPreviewLayer 是这样创建的:

let cameraPreviewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
cameraPreviewLayer.videoGravity = .resizeAspectFill
cameraPreviewLayer.connection?.videoOrientation = .portrait
cameraPreviewLayer.frame = view.frame
view.layer.insertSublayer(cameraPreviewLayer,at: 0)

但是为了确保在当前位置创建图层,我在 Preview View 下面创建了这个 Stack Control(见图)。

想法是将 AVCaptureVideoPreviewLayer 添加到该视图中。

所以,我将代码更改为:

let cameraPreviewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
cameraPreviewLayer.videoGravity = .resizeAspectFill
cameraPreviewLayer.connection?.videoOrientation = .portrait
cameraPreviewLayer.frame = view.frame
previewView.layer.insertSublayer(cameraPreviewLayer,at: 0)

也试过了

previewView.layer.addSublayer(cameraPreviewLayer)

没办法,预览显示正常,但 Stack Control 不存在。如果我不插入 AVCaptureVideoPreviewLayer,我会看到堆栈。

有什么想法吗?

解决方法

你需要做的是,

  1. 获取 AVCapturePreviewLayer,并将其作为子层添加到 PreviewView。

    PreviewView.layer.addSublayer(cameraPreviewLayer)

  2. 将previewView作为子View添加到父View

    view.addSubview(PreviewView)

  3. 并将 StackControl 作为子视图添加到父视图中

    view.addSubview(StackControl)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。