黄色警告:从'AVCaptureVideoPreviewLayer'到'AVCaptureVideoPreviewLayer'的条件转换总是成功的

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了黄色警告:从'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?类型的对象(即返回的对象不是可选的,因此它不能为nil)。

当你做if let时,Swift期望一个Optional类型。由于未创建任何可选类型,因此会发生错误。

我的建议是删除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) 

希望这可以帮助!

以上是关于黄色警告:从'AVCaptureVideoPreviewLayer'到'AVCaptureVideoPreviewLayer'的条件转换总是成功的的主要内容,如果未能解决你的问题,请参考以下文章

Qt-忽略黄色警告提示

Qt-忽略黄色警告提示

react native 0.43 升级后问题:点击警告框(下面的黄色框)会使应用崩溃

自动布局黄色警告。它会在运行时使我的应用程序崩溃吗

IDEA 去除XML中的黄色警告线

javascript 忽略警告(黄色)