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

2021-06-17  本文已影响0人  光光6

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), 这样就限制了它的扫码区域为一个固定的位置

上一篇下一篇

猜你喜欢

热点阅读