IOS二维码的实现
如今二維碼隨處可見,無論是實物商品還是各種禮券都少不了二維碼的身影。而手機等移動設(shè)備又成為二維碼的一個很好的應(yīng)用平臺,不管是生成二維碼還是掃碼二維碼。
掃描二維碼的開源庫有很多如 ZBar、ZXing等。在此以ZBar作為例子構(gòu)建二維碼掃碼應(yīng)用。
首先在github上下載ZBar SDK
地址https://github.com/bmorton/ZBarSDK
打開壓縮包,其中有ZBarSDK 文件夾
將ZBarSDK 文件夾包含到項目中來
(Finder)
(XCode)
其中包含一個libzbar.a的靜態(tài)庫
接著往項目中添加Framework框架及鏈接庫(動態(tài)庫、靜態(tài)庫)。在項目屬性TARGETS?Summary 中找到Linked Frameworks and Libraries
添加
AVFoundation.framwork, CoreMedia.framework, CoreVideo.framework, libiconv.dylib 和libzbar.a (如圖)
然后在使用的地方引入頭文件
#import "ZBarSDK.h"
調(diào)用ZBar的類必須實現(xiàn)ZBarReaderDelegate協(xié)議
如:UIViewController <ZBarReaderDelegate>
在- (void) imagePickerController: (UIImagePickerController*) reader
didFinishPickingMediaWithInfo: (NSDictionary*) info
最后在協(xié)議方法中通過info獲取結(jié)果值
[cpp]?view plaincopy id<NSFastEnumeration>?results?=?[info?objectForKey:?ZBarReaderControllerResults];?? ZBarSymbol?*symbol?=?nil;?? for(symbol?in?results)?? //?EXAMPLE:?just?grab?the?first?barcode??? break;?? ?? //?EXAMPLE:?do?something?useful?with?the?barcode?data??? resultText.text?=?symbol.data;?? [cpp]?view plaincopy id<NSFastEnumeration>?results?=?[info?objectForKey:?ZBarReaderControllerResults];?? ZBarSymbol?*symbol?=?nil;?? for(symbol?in?results)?? //?EXAMPLE:?just?grab?the?first?barcode?? break;?? ?? //?EXAMPLE:?do?something?useful?with?the?barcode?data?? resultText.text?=?symbol.data;??
文檔地址http://zbar.sourceforge.net/iphone/sdkdoc/
二維碼開源庫ZXing的加載過程與此類似,但是ZXing默認(rèn)并不支持一維碼的掃描,而ZBar是支持的。
2. 生成二維碼(編碼)
在生成二維碼的庫中QREncoder 比較好用。ZXing庫的android版本是帶java版的編碼庫的但不知為何沒有C++版的解碼庫,故在ios上也沒法解碼,如果應(yīng)用中既要生成二維碼又要掃描二維碼就有可能要帶兩套不同的庫。
首先同樣是在github 上下載到SDK庫
地址https://github.com/jverkoey/ObjQREncoder
解壓后將源碼庫直接包含到項目中來(如圖)
然后在使用該庫的地方包含頭文件
#import <QREncoder/QREncoder.h>
注意:二維碼顯示的時候有可能會因為圖像的大小而做調(diào)整,所以需要包含系統(tǒng)庫QuartzCore.framework
最后就可以調(diào)用編碼庫了:
UIImage*?image?=?[QREncoder?encode:@"http://www.baidu.com/"];?? [cpp]?view plaincopy UIImage*?image?=?[QREncoder?encode:@"http://www.baidu.com/"];??
下面介紹一下如何在蘋果iOS設(shè)備上使用二維碼:
掃描二維碼的開源庫有很多如 ZBar、ZXing等。在此以ZBar作為例子構(gòu)建二維碼掃碼應(yīng)用。
首先在github上下載ZBar SDK
地址https://github.com/bmorton/ZBarSDK
打開壓縮包,其中有ZBarSDK 文件夾
將ZBarSDK 文件夾包含到項目中來
(Finder)
(XCode)
其中包含一個libzbar.a的靜態(tài)庫
接著往項目中添加Framework框架及鏈接庫(動態(tài)庫、靜態(tài)庫)。在項目屬性TARGETS?Summary 中找到Linked Frameworks and Libraries
添加
AVFoundation.framwork, CoreMedia.framework, CoreVideo.framework, libiconv.dylib 和libzbar.a (如圖)
然后在使用的地方引入頭文件
#import "ZBarSDK.h"
調(diào)用ZBar的類必須實現(xiàn)ZBarReaderDelegate協(xié)議
如:UIViewController <ZBarReaderDelegate>
在- (void) imagePickerController: (UIImagePickerController*) reader
didFinishPickingMediaWithInfo: (NSDictionary*) info
最后在協(xié)議方法中通過info獲取結(jié)果值
[cpp]?view plaincopy
文檔地址http://zbar.sourceforge.net/iphone/sdkdoc/
二維碼開源庫ZXing的加載過程與此類似,但是ZXing默認(rèn)并不支持一維碼的掃描,而ZBar是支持的。
2. 生成二維碼(編碼)
在生成二維碼的庫中QREncoder 比較好用。ZXing庫的android版本是帶java版的編碼庫的但不知為何沒有C++版的解碼庫,故在ios上也沒法解碼,如果應(yīng)用中既要生成二維碼又要掃描二維碼就有可能要帶兩套不同的庫。
首先同樣是在github 上下載到SDK庫
地址https://github.com/jverkoey/ObjQREncoder
解壓后將源碼庫直接包含到項目中來(如圖)
設(shè)置頭文件路徑,在TARGET中building settings ? Search Path
當(dāng)然也可以直接將庫編譯成靜態(tài)庫libQREcoder.a然后在包含進來
接著在Frameworks 中添加靜態(tài)庫的引用
然后在使用該庫的地方包含頭文件
#import <QREncoder/QREncoder.h>
注意:二維碼顯示的時候有可能會因為圖像的大小而做調(diào)整,所以需要包含系統(tǒng)庫QuartzCore.framework
最后就可以調(diào)用編碼庫了:
[cpp]?view plaincopy
總結(jié)
- 上一篇: IOS开发之----远程推送通知
- 下一篇: IOS中四种json解析效率比较