Swift 原生条码二维码设置扫描区域

时间:2021-7-20 作者:qvyue

swift 原生二维码条码扫描代码, 设置条形码、二维码扫描中心点

下面的代码部分, 是设置扫码响应区域, 也就是限制扫码区域.

//捕获元数据输出流

    private func setupSessionOutput() {

        guard!Platform.isSimulatorelse{

            return

        }

        letvideoDataOutput =AVCaptureVideoDataOutput()

        videoDataOutput.setSampleBufferDelegate(self, queue:DispatchQueue.main)

        captureSession.addOutput(videoDataOutput)

        let output = AVCaptureMetadataOutput()

        captureSession.addOutput(output)

        output.setMetadataObjectsDelegate(self, queue: DispatchQueue.main)

        output.rectOfInterest=CGRect(x:0, y:0, width:300/screenHeight, height:screenHeight/screenWidth)

        fortypeinmetadata{

            if !output.availableMetadataObjectTypes.contains(type){

                return

            }

        }

        // 设置扫码支持的编码格式(如下设置条形码和二维码兼容)

        output.metadataObjectTypes = metadata

        videoPreviewLayer?.session = captureSession

        view.setNeedsLayout()

    }

它是以右上角为(0, 0)点, 宽高接受的是宽高所占屏幕宽高的比例, 并且横纵坐标是颠倒的,, 进一步解释就是以右上角为(0,0)点, 扫码区域高度除以屏幕高度作为宽, 扫码区域宽度除以屏幕宽度作为高,所以它最终的值为CGRect(y/ScreenHeight, (ScreenWidth – leftPadding – scanWidth)/ScreenWidth, height/ScreenHeight, width/ScreenWidth), 这样就限制了它的扫码区域为一个固定的位置

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。