首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >黄色警告:从“AVCaptureVideoPreviewLayer”到“AVCaptureVideoPreviewLayer”的条件转换总是成功的

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

Stack Overflow用户
提问于 2018-09-01 17:06:20
回答 1查看 154关注 0票数 1

我有一段代码,它发出黄色警告。我想不出怎么对它进行编码,所以黄色警告就消失了。在从Swift-2 -> 3 -> 4转换后,试图清理我的代码。

代码语言:javascript
运行
复制
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”

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-01 17:24:32

AVCaptureVideoPreviewLayer(session: captureSession)总是返回AVCaptureVideoPreviewLayer类型的对象,而不是AVCaptureVideoPreviewLayer?类型的对象(即返回的对象不是可选的,因此不能为零)。

当您执行if let时,Swift需要一个可选的类型。由于没有创建可选类型,因此会发生错误。

我的建议是删除if部件,只需

代码语言:javascript
运行
复制
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) 

希望这能有所帮助!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52130429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档