AVCaptureVideoPreviewLayer

AVCaptureVideoPreviewLayer

我有这个密码,它会发出黄色警告。我不知道如何编码,所以黄色警告消失了。在从Swift-2->3->4转换后尝试清理我的代码。

if let previewLayer = AVCaptureVideoPreviewLayer(session: captureSession) as? AVCaptureVideoPreviewLayer {
    previewLayer.bounds = imageView.bounds
    previewLayer.position = CGPoint(x: 140, y: 140)
    previewLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill
    imageView.layer.addSublayer(previewLayer)
    view.addSubview(imageView)
}

删除as? AVCaptureVideoPreviewLayer将显示一个错误:
条件绑定的初始值设定项必须具有可选类型,而不是“AVCaptureVideoPreviewLayer”

最佳答案

AVCaptureVideoPreviewLayer(session: captureSession)总是返回AVCaptureVideoPreviewLayer类型的对象,而不是AVCaptureVideoPreviewLayer?类型的对象(即,返回的对象不是可选的,因此不能为零)。
当您执行if let时,Swift需要一个可选类型。由于没有创建可选类型,因此发生错误。
我的建议是去掉if部分

let previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
previewLayer.bounds = imageView.bounds
previewLayer.position = CGPoint(x: 140, y: 140)
previewLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill
imageView.layer.addSublayer(previewLayer)
view.addSubview(imageView)

希望这有帮助!

09-28 09:42