/*** 懶加輸入源*/-(AVCaptureDeviceInput *)input { if (!_input) { _input = [AVCaptureDeviceInput deviceInputWithDevice:self.device error:nil]; } return _input;}
/*** 懶加載輸出源*/-(AVCaptureMetadataOutput *)output { if (!_output) { _output = [[AVCaptureMetadataOutput alloc] init]; [_output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()]; } return _output;}
設(shè)置掃描二維碼的方法,在- (void)viewDidLoad
方法里進(jìn)行調(diào)用。
1、該方法里面,創(chuàng)建會(huì)話設(shè)備,并設(shè)置為高質(zhì)量的采集,然后分別判斷添加輸入源和輸入源到會(huì)話中。
2、條碼的類型,我這里直接把全部碼所在的數(shù)組都放進(jìn)去了,比較方便吧,當(dāng)然只設(shè)置其中幾種條碼也可以。
3、設(shè)置掃描的范圍,我們下面再說。
4、創(chuàng)建一個(gè)預(yù)覽的圖層,將會(huì)話作為創(chuàng)建的參數(shù)傳入,并圖層為鋪滿整個(gè)屏幕。
5、創(chuàng)建一個(gè)非掃描區(qū)域的黑色蒙板圖層,設(shè)置它的代理為當(dāng)前的控制器,并實(shí)現(xiàn)它的代理方法,它的代理方法其實(shí)就是創(chuàng)建一個(gè)蒙板,代理方法具體的實(shí)現(xiàn),待會(huì)在下面會(huì)貼出代碼。
/*** 設(shè)置掃描二維碼*/-(void