AVCaptureMetadataOutput().rectOfInterest not Working(AVCaptureMetadataOutput().rectOfInterest不起作用)
本文介绍了AVCaptureMetadataOutput().rectOfInterest不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在构建一个UIView
,它有一个覆盖的盒子,最终目标是让二维码读取器仅在二维码落入盒子内时触发。我知道我需要将.rectOfInterest()
设置为与黄色框相同,但在当前实现中(下面的代码),阅读器无法工作。
public override init(frame: CGRect) {
super.init(frame: frame)
if let captureDevice = AVCaptureDevice.default(for: .video) {
do {
let input = try AVCaptureDeviceInput(device: captureDevice)
session.addInput(input)
} catch {
print("Error")
}
let scannerRect = CGRect(x: self.center.x - (self.frame.width * 0.667 / 2), y: self.frame.width * 0.667 / 4, width: self.frame.width * 0.667, height: self.frame.width * 0.667)
let output = AVCaptureMetadataOutput()
output.rectOfInterest = scannerRect
session.addOutput(output)
output.setMetadataObjectsDelegate(self, queue: DispatchQueue.main)
output.metadataObjectTypes = [.qr]
video = AVCaptureVideoPreviewLayer(session: session)
video.frame = self.layer.bounds
scannerBounds.frame = scannerRect
scannerBounds.borderColor = UIColor.yellow.cgColor
scannerBounds.borderWidth = 5
self.layer.addSublayer(video)
self.layer.insertSublayer(scannerBounds, above: video)
}
}
请帮我将盒子和二维码读取器对齐。
推荐答案
首先,您是否正在提交会话配置并启动捕获会话?
session.commitConfiguration()
session.startRunning()
接下来,您需要将UIView
的坐标中表示的RECT转换为AVCaptureVideoPreviewLayer
的坐标系:
output.rectOfInterest = video.metadataOutputRectConverted(fromLayerRect: scannerRect)
最后,您可能需要调整事情的顺序。我遇到了感兴趣的RECT不能正常工作的问题。结果是,在视图完全布局之前设置rectOfInterest
可能会导致它无法按预期工作。
在iOS 11和更高版本上,我在查看器的safeAreaInsetsDidChange
内部设置rectOfInterest
,然后启动摄像头。
在iOS 10及更低版本上,我在视图控制器的viewWillAppear
中执行此操作。
这篇关于AVCaptureMetadataOutput().rectOfInterest不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:AVCaptureMetadataOutput().rectOfInterest不起作用
基础教程推荐
猜你喜欢
- 如何让对象对 Cocos2D 中的触摸做出反应? 2022-01-01
- 当从同一个组件调用时,两个 IBAction 触发的顺序是什么? 2022-01-01
- android 应用程序已发布,但在 google play 中找不到 2022-01-01
- 如何在 UIImageView 中异步加载图像? 2022-01-01
- 如何在没有IB的情况下将2个按钮添加到右侧的UINavigationbar? 2022-01-01
- Android:对话框关闭而不调用关闭 2022-01-01
- Kivy Buildozer 无法构建 apk,命令失败:./distribute.sh -m “kivy"d 2022-01-01
- 如何在 iPhone 上显示来自 API 的 HTML 文本? 2022-01-01
- UIWebView 委托方法 shouldStartLoadWithRequest:在 WKWebView 中等效? 2022-01-01
- 在 gmail 中为 ios 应用程序检索朋友的朋友 2022-01-01