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