)setupScanQRCode { _session = [[
AVCaptureSession alloc] init]; [_session setSessionPreset:
AVCaptureSessionPresetHigh];
if ([_session canAddInput:
self.input]) { [_session addInput:
self.input]; }
if ([_session canAddOutput:
self.output]) { [_session addOutput:
self.output]; } [
self.output setMetadataObjectTypes:
self.output.availableMetadataObjectTypes]; [
self setOutputInterest]; _preview = [
AVCaptureVideoPreviewLayer layerWithSession:_session]; _preview.videoGravity =
AVLayerVideoGravityResizeAspectFill; _preview.frame =
self.view.layer.bounds;
self.view.layer.backgroundColor = [[
UIColor blackColor]
CGColor]; [
self.view.layer insertSublayer:_preview atIndex:
0];
self.maskLayer = [[
CALayer alloc]init];
self.maskLayer.frame =
self.view.layer.bounds;
self.maskLayer.delegate =
self; [
self.view.layer insertSublayer:
self.maskLayer above:_preview]; [
self.maskLayer setNeedsDisplay];}
設(shè)置掃描范圍
關(guān)于掃描范圍,這是一個(gè)坑,稍稍不注意,就會(huì)踩進(jìn)去了。掃描的范圍是通過(guò)這個(gè)參數(shù)rectOfInterest來(lái)設(shè)置的,但這個(gè)參數(shù)不是普通的CGRect,而是0~1的一個(gè)范圍比例。正確的創(chuàng)建為CGRectMake(y/Height,x/Width,height/Height,width/Width),這里左邊是掃描區(qū)域的x,y,width,height,右邊的是當(dāng)前控制器view的Width和Height。具體的代碼實(shí)現(xiàn)如下:
5/9 首頁(yè) 上一頁(yè) 3 4 5 6 7 8 下一頁(yè) 尾頁(yè)