日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS ZBarSDK 用ZBarReaderView自定义二维码扫描界面

發(fā)布時間:2023/12/20 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS ZBarSDK 用ZBarReaderView自定义二维码扫描界面 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

轉自:http://blog.sina.com.cn/s/blog_b8e976830101cpr7.html

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

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

ZBarReaderViewreaderView?=?[[ZBarReaderViewalloc]init];
readerView.frame?=?CGRectMake(0,?44,self.view.frame.size.width,self.view.frame.size.height?-?44);
readerView.readerDelegate?=?self;
//關閉閃光燈
readerView.torchMode?=?0;
//掃描區(qū)域
CGRectscanMaskRect?=?CGRectMake(60,CGRectGetMidY(readerView.frame)?-?126,?200,?200);
? ??
//處理模擬器
if?(TARGET_IPHONE_SIMULATOR)?{
? ?ZBarCameraSimulator?*cameraSimulator?
? ? ???=?[[ZBarCameraSimulatoralloc]initWithViewController:self];
? ?cameraSimulator.readerView?=?readerView;
}
[self.view addSubview:readerView];
//掃描區(qū)域計算
readerView.scanCrop?=?[selfgetScanCrop:scanMaskRectreaderViewBounds:self.readerView.bounds];

[readerView start];

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

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

    -(CGRect)getScanCrop:(CGRect)rectreaderViewBounds:(CGRect)readerViewBounds
    {
    ? ? CGFloatx,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方法開始掃描了,需要讓你的類實現(xiàn)ZBarReaderViewDelegate協(xié)議,在掃描到二維碼時會調用delegate的對應方法。最后,當二維碼已經識別時候,可以調用ZBarReaderView的stop方法停止掃描。如下所示:

    -?(void)readerView:(ZBarReaderView?*)readerViewdidReadSymbols:(ZBarSymbolSet?*)symbolsfromImage:(UIImage?*)image
    {
    ???for?(ZBarSymbol?*symbol?in?symbols)?{
    ? ? ?? NSLog(@"%@", symbol.data);
    ? ? ???break;
    ? ??}
    ? ??
    ???[self.readerView stop];
    }

    總結

    以上是生活随笔為你收集整理的iOS ZBarSDK 用ZBarReaderView自定义二维码扫描界面的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。