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