【问题标题】:Confining AVCaptureVideoPreviewLayer to a defined frame in Swift将 AVCaptureVideoPreviewLayer 限制在 Swift 中定义的帧
【发布时间】:2014-11-13 16:02:47
【问题描述】:

我正在尝试创建一个相机应用程序,其中来自相机的视频输入被限制在我在情节提要布局中定义的大小,我使用称为 imageView 的 UIImageView 来确定布局。我使用 pin 工具将 imageView 限制为与视图两侧有一定距离,但我得到了一个奇怪的行为,即 imageView 看起来正确,但称为 previewLayer 的相机预览层已关闭。我不知道为什么会这样,因为我使用的是 imageView 框架来定义 previewLayer 框架,如下:

    previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
    self.view.layer.addSublayer(previewLayer)
    let viewLayer : CALayer = imageView.layer
    previewLayer?.frame = imageView.frame

似乎我无法发布图像,但我得到的是 imageView 按预期定位,但相机预览层要小得多,尽管我试图让两者的大小完全相同。

我不确定我应该怎么做才能使相机预览的大小与 imageView 相同(我可以在情节提要上移动)。非常感谢任何帮助!

【问题讨论】:

    标签: swift camera frame


    【解决方案1】:

    问题是由于 pin 工具的自动布局导致的,它改变了 imageView 的边界。但是,在应用约束之前,previewLayer 的边界由 imageView 的先前边界定义。为了解决这个问题,我调用了 layoutIfNeeded(),它强制应用了约束,因此 previewLayer 得到了 imageView 的最终边界。

    【讨论】:

      猜你喜欢
      • 2011-09-23
      • 1970-01-01
      • 2019-01-24
      • 2015-02-12
      • 1970-01-01
      • 2012-10-14
      • 2021-09-30
      • 1970-01-01
      • 2020-04-07
      相关资源
      最近更新 更多