先走提前量,不然不能開搞:
引入AVFoundation框架
然后會(huì)使用其下的 device,input,session通今,metadataoutput粥谬,MetadataObject肛根,等類。其中創(chuàng)建等問題不大漏策,有幾個(gè)坑需要注意派哲,
1,初始記得向系統(tǒng)獲取權(quán)限?
AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted){
里邊需要更新主界面時(shí)記得使用調(diào)取主線程的方法
}
2掺喻,output設(shè)置setMetadataObjectTypes 時(shí)記得在output加入session之后再設(shè)置芭届,不然運(yùn)行會(huì)崩潰
3储矩,這是創(chuàng)建掃描區(qū)域 output.rectOfInterest的方法,開始建立的是你希望正常顯示的區(qū)域
CGSize size = self.view.bounds.size;
CGRect cropRect = CGRectMake(SCREEN_WIDTH/2-110,100,220,220);
因?yàn)閛utput.rectOfInterest的值為{0褂乍,0持隧,1,1} 最大值是1逃片,就是全屏的屡拨,但是轉(zhuǎn)化時(shí)候需要注意寬高互相掉換,就變成這樣的比例表達(dá)方式:
[_qrdevice outPutRect: CGRectMake(cropRect.origin.y/SCREEN_HEIGHT,
cropRect.origin.x/size.width,
cropRect.size.height/size.height,
cropRect.size.width/size.width)];
加入界面褥实,全部處理完之后就可以掃描二維碼獲取信息了呀狼。