IOS開發之ZBarReaderView的使用

來源:互聯網
上載者:User

標籤:

IOS開發之ZBarReaderView的使用HOMEABOUTGUESTBOOKCATEGORIESTAGSLINKSSUBSCRIBE

當開發IOS程式中需要用到二維碼識別功能的時候,zbar這個開源庫估計會被不少人選擇。但是關於zbar的用法,網上的資料大部分都集中在ZBarReaderViewController這個類的使用上。本人在使用中,發現ZBarReaderViewController這 個類使用很不靈活,比如,如果需要對介面做一些自訂的定製時會變得很麻煩。在zbar的標頭檔中,我發現了ZBarReaderView這個類,直覺告 訴我這個類的使用應該是比較靈活。google之後發現針對這個類的使用說明比較少,幾乎沒有,只能自己動手了,在下載了zbar的源碼稍作研究後,終於 搞定了ZBarReaderView的用法。

用法

ZBarReaderView是UIView的子類,所以我們可以將其當做一個view來設定大小並放置到我們自己介面的任何地方。初始化ZBarReaderView的代碼如下:

ZBarReaderView *readview = [ZBarReaderView new]; // 初始化readview.frame = CGRectMake(0, 0, 320, 460); // 改變framereadview.readerDelegate = self; // 設定delegatereadview.allowsPinchZoom = NO; // 不使用Pinch手勢變焦[self.view addSubview:readview]; 

其中第四行的預設值是YES。使用ZBarReaderView的類要實現 ZBarReaderViewDelegate代理。

添加上述代碼後,只是將ZBarReaderView添加到了我們的控制器視圖中,網路攝影機並沒有啟動,readview也不會顯示視頻流。ZBarReaderView中有兩個方法可以很方便的開啟和關閉網路攝影機。

[readview start];    // 開始掃描[readview stop]; // 停止掃描

你可以在需要的時候調用這兩個方法來控制網路攝影機的開啟和關閉。這樣,如果網路攝影機在開啟狀態並且掃描到二維碼或者條碼以後,ZBarReaderViewDelegate的以下代理函數就會被調用。並可以在其中做一些處理。

- (void)readerView:(ZBarReaderView *)readerView didReadSymbols:(ZBarSymbolSet *)symbols fromImage:(UIImage *)image{ // 得到掃描的條碼內容 const zbar_symbol_t *symbol = zbar_symbol_set_first_symbol(symbols.zbarSymbolSet); NSString *symbolStr = [NSString stringWithUTF8String: zbar_symbol_get_data(symbol)]; if (zbar_symbol_get_type(symbol) == ZBAR_QRCODE) { // 是否QR二維碼 }}

你可能已經注意到ZBarReaderViewDelegate代理函數中的fromImage:(UIImage *)image這個參數了。沒錯,ZBarReaderView可以調用網路攝影機來完成拍照功能。你需要按以下方法調用。

[readview.captureReader captureFrame];

上述代碼執行後,ZBarReaderViewDelegate的代理函數同樣會被調用,其中的fromImage:(UIImage *)image就是方法調用時網路攝影機捕獲的映像。

總結

我本身對zbar這個開源的庫也沒有做深入研究,只是在實際使用中總結了一些用法。有感於這方面的資料比較少,特此做一個總結。

IOS開發之ZBarReaderView的使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.