二维码扫描区域确定

二维码扫描,很多时候项目中会使用到,只是有个头疼的问题,就是扫描区域不够精准,有不少人都是手工去计算,rectOfInterest是扫描范围, 默认为左上角 (0,0,1,1)这是默认值 ,全屏的,最大为1。 经实践发现 (0,0,1,1)这个写法有点坑 实际为(y,x,h,w) 即坐标y,x 尺寸高,宽(h,w)。 当然了用计算方法算不太准确,而且,这个地方太坑了,最后我找到一个方法分享出来,很是精准的。

//监听
   [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(InputChangeNotification) name:AVCaptureInputPortFormatDescriptionDidChangeNotification object:nil];

//设置
- (void)InputChangeNotification {
    AVCaptureMetadataOutput *output = self.session.outputs.firstObject;
    output.rectOfInterest = [self.previewLayer metadataOutputRectOfInterestForRect:self.scanRect];
}

//self.session //会话
//self.previewLayer //取景视图
//metadataOutputRectOfInterestForRect:最终是用这个方法转化到实际扫描范围坐标系的。

猜你喜欢

转载自my.oschina.net/snOS/blog/1794649