将AVCaptureVideoPreviewLayer限制为Swift中定义的帧

时间:2014-11-13 16:02:48

标签: swift camera frame

我正在尝试创建一个相机应用,其中来自相机的视频输入被限制在我在故事板布局中定义的大小,其中我使用名为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相同(我可以在故事板上移动)。非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

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