首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS - Swift -条形码扫描仪-扫描区域位于屏幕中心下方

iOS - Swift -条形码扫描仪-扫描区域位于屏幕中心下方
EN

Stack Overflow用户
提问于 2020-07-27 18:50:02
回答 1查看 336关注 0票数 0

当条形码就在屏幕中央时,我无法扫描条形码,相反,我必须从屏幕中心稍下方的位置捕获条形码。

当我试图在横向模式下捕获条形码时,我必须扫描屏幕中心下方的条形码。我只想从屏幕的中间扫描条形码,而不考虑屏幕的方向。

EN

回答 1

Stack Overflow用户

发布于 2020-07-28 08:51:40

一旦你开始在不同的方向上捕获,下面的代码就必须在主线程中调用。这段代码将帮助焦点区域位于屏幕的中心。

代码语言:javascript
复制
private var output: AVCaptureMetadataOutput?
private func configurePointOfInterests() {
    guard let device = self.captureDevice else { return }
    guard let videoPreviewLayer = self.videoPreviewLayer else { return }
    
    do {
        try device.lockForConfiguration()
        let point = CGPoint(x: self.view.bounds.midX, y: self.view.bounds.midY)
        let convPoint = videoPreviewLayer.captureDevicePointConverted(fromLayerPoint: point)
        
        device.exposurePointOfInterest = convPoint
        device.focusPointOfInterest = convPoint
        device.unlockForConfiguration()
    } catch {
        delegate?.cameraViewController(self, didReceiveError: error)
    }
}

private func configureRectOfInterest() {
    if let roi = videoPreviewLayer?.metadataOutputRectConverted(fromLayerRect: self.view.bounds) {
        output?.rectOfInterest = roi
    }
}

当您开始捕获self.captureSession.startRunning()时,如下所示在主线程中调用

代码语言:javascript
复制
            DispatchQueue.main.async {
                self.configurePointOfInterests()
                self.configureRectOfInterest()
            }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63113752

复制
相关文章

相似问题

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