萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> 安卓開發 >> 如何在iOS中使用ZBar掃描二維碼

如何在iOS中使用ZBar掃描二維碼

ZBar是一個常用的二維碼識別軟件,小編對在iOS中使用ZBar掃描二維碼的程序作了簡單整理,它的注釋清晰,便於使用。

ZBar為我們提供了兩種使用方式,一種是直接調用ZBar提供的ZBarReaderViewController打開一個掃描界面,另一種方式是使用ZBar提供的可以嵌在其他視圖中的ZBarReaderView,實際項目中我們更可能會使用第二種方式,這可以讓我們對界面做更多的定制。

ZBar使用起來也非常簡單,將ZBarSDK導入項目,在需要使用ZBar的文件中導入ZBarSDK.h頭文件即可,以下是ZBarReaderView的初始化方法:

ZBarReaderView readerView = [[ZBarReaderView alloc]init];

readerView.frame = CGRectMake(0, 44, self.view.frame.size.width, self.view.frame.size.height - 44);

readerView.readerDelegate = self;

//關閉閃光燈

readerView.torchMode = 0;

//掃描區域

CGRect scanMaskRect = CGRectMake(60, CGRectGetMidY(readerView.frame) - 126,200,200);

//處理模擬器

if (TARGET_IPHONE_SIMULATOR) {

ZBarCameraSimulator *cameraSimulator

= [[ZBarCameraSimulator alloc]initWithViewController:self];

cameraSimulator.readerView = readerView;

}

[self.view addSubview:readerView];

//掃描區域計算

readerView.scanCrop = [self getScanCrop:scanMaskRect readerViewBounds:self.readerView.bounds];

[readerView start];

以上代碼需要說明的有以下幾點:

閃光燈設置

我不希望在掃描二維碼時開啟閃光燈,所以將ZBarReaderView的torchMode設為0,你可以將它設置為其他任何合適的值。

掃描區域計算

這點比較重要,我們常用的二維碼掃描軟件的有效掃描區域一般都是中央區域,其他部分是不進行掃描的,ZBar可以通過ZBarReaderView的scanCrop屬性設置掃描區域,它的默認值是CGRect(0, 0, 1, 1),表示整個ZBarReaderView區域都是有效的掃描區域。我們需要把掃描區域坐標計算為對應的百度分數坐標,也就是以上代碼中調用的getScanCrop:readerViewBounds方法,親測沒有問題,如下所示:

-(CGRect)getScanCrop:(CGRect)rect readerViewBounds:(CGRect)readerViewBounds

{

CGFloat x,y,width,height;

x = rect.origin.x / readerViewBounds.size.width;

y = rect.origin.y / readerViewBounds.size.height;

width = rect.size.width / readerViewBounds.size.width;

height = rect.size.height / readerViewBounds.size.height;

return CGRectMake(x, y, width, height);

}

PS:在網上找到很多這個方法都是將橫坐標和縱坐標交叉,這樣是有問題的,仔細想一下就會明白。

初始化部分完成之後,就可以調用ZBarReaderView的start方法開始掃描了,需要讓你的類實現ZBarReaderViewDelegate協議,在掃描到二維碼時會調用delegate的對應方法。最後,當二維碼已經識別時候,可以調用ZBarReaderView的stop方法停止掃描。如下所示:

- (void)readerView:(ZBarReaderView *)readerView didReadSymbols:(ZBarSymbolSet *)symbols fromImage:(UIImage *)image

{

for (ZBarSymbol *symbol in symbols) {

NSLog(@"%@", symbol.data);

break;

}

[self.readerView stop];

}

以上就是小編為大家整理的在iOS中使用ZBar掃描二維碼的方法及程序代碼,希望對大家有所幫助。

copyright © 萬盛學電腦網 all rights reserved