二维码扫描,很多时候项目中会使用到,只是有个头疼的问题,就是扫描区域不够精准,有不少人都是手工去计算,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:最终是用这个方法转化到实际扫描范围坐标系的。