我正在使用Swift构建iOS应用,该应用需要QR码扫描仪功能。
[我已经使用AVFoundation实现了QR码扫描仪,现在我的捕获屏幕看上去与视频录制屏幕相同,即AVCaptureVideoPreviewLayer
显示了摄像机正在捕获的内容。
但是由于它是QR码扫描仪,而不是常规图像或视频捕获,我希望我的VideoPreviewLayer
看起来像这样:
我知道可以通过在一个VideoPreviewLayer
的基础上再添加一个VideoPreviewLayer
来实现。
我的问题是:
如何仅将边框添加到上(或更小)预览层的边缘?
如何更改背景中VideoPreviewLayer
的亮度级别?
如何忽略背景层捕获的媒体?
长话短说:您可以使用AVCaptureVideoPreviewLayer进行视频捕获,创建另一个CALayer()并使用layer.insertSublayer(...,上方:...)在视频层上方插入“自定义”层,并通过自定义我的意思是再说一次CALayer,请说
layer.contents = spinner.cgImage
您不应该使用其他VideoPreviewLayer。相反,您应该添加两个子层-一个用于遮罩的背景区域,另一个用于拐角。
以示例的形式查看此repo中的源代码。
为了将视频捕获限制在屏蔽区域,您必须设置rectOfInterest
的AVCaptureMetadataOutput
。
let rectOfInterest = videoPreviewLayer.metadataOutputRectConverted(fromLayerRect: rect)
metadataOutput.rectOfInterest = rectOfInterest