限定扫描区域

限定扫描区域(rectOfInterest)

1. 输出设备的rectOfInterest默认是屏幕大小,所以要将扫描区域设置成二维码边框的区域,否则就会有可能有很多二维码被识别
2. 输出设备的rectOfInterest是按照横屏来计算的,所以当竖屏的情况下x轴和y轴要交换一下
3. 注意事项:
    1. 里面的取值, 是一个0-->1的比例
    2. 坐标相对应的坐标系是: 右上角为0, 0 (横屏状态下的坐标系)
4. 使用时机:在代理方法didOutputMetadataObjects前设置,即在输出结果前设置

限定扫描区域代码实现

  1. objc

    // 设置扫描取景范围
        CGFloat screenW = [UIScreen mainScreen].bounds.size.width;
        CGFloat screenH = [UIScreen mainScreen].bounds.size.height;
        CGFloat scanW = screenW * 0.6;
        CGRect scanRect = CGRectMake((screenW - scanW) * 0.5, (screenH - scanW) * 0.5, scanW, scanW);
    
        output.rectOfInterest = CGRectMake(scanRect.origin.y / screenH, scanRect.origin.x / screenW, scanRect.size.height / screenH, scanRect.size.width / screenW);
    
  2. swift

    // 设置输出的兴趣区域(限定扫描区域)
        let size = UIScreen.mainScreen().bounds.size
        let x: CGFloat = backView.frame.origin.x / size.width
        let y: CGFloat = backView.frame.origin.y / size.height
        let w: CGFloat = backView.frame.size.width / size.width
        let h: CGFloat = backView.frame.size.height / size.height
    
        output.rectOfInterest = CGRectMake(y, x, h, w)
    

竖屏->横屏坐标系图解

横屏下的x轴:竖屏下的y轴

限定扫描区域_第1张图片
y.png

横屏下的y轴:竖屏下的x轴

限定扫描区域_第2张图片
x.png

横屏下的宽:竖屏下的高

限定扫描区域_第3张图片
h.png

横屏下的高:竖屏下的宽

限定扫描区域_第4张图片
w.png

你可能感兴趣的:(限定扫描区域)