二維碼的使用已是非常廣泛了,不多說,直接入主題:
1.掃描二維碼
在ios中掃描二維碼的開源庫常見的有ZBar和ZXing,在網上看到說ZXing在ios中隻能實作掃描二維碼,不支援一維碼,是以,我就隻用ZBar開源庫了(有興趣的也可以嘗試ZXing),可以到github去下載下傳,下載下傳位址:https://github.com/bmorton/ZBarSDK。
下載下傳之後,将整個庫拖拽到你的工程之中,如下所示:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZwpmLzAzM18FO3ATO3kDM2MTMvwlNx8CXyAzMxAjMvw1ckF2bsBXdvwFdl5mLuR2cj5Set1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
然後往項目中添加Framework架構及連結庫(動态庫、靜态庫),添加如下:AVFoundation.framwork, CoreMedia.framework, CoreVideo.framework, libiconv.dylib。
引入頭檔案:#import "ZBarSDK.h"。
下面是掃描二維碼的代碼,具體解釋已注明:
-(void)scanQRcode:(id)sender
{
/*掃描二維碼部分:
導入ZBarSDK檔案并引入一下架構
AVFoundation.framework
CoreMedia.framework
CoreVideo.framework
QuartzCore.framework
libiconv.dylib
引入頭檔案#import “ZBarSDK.h” 即可使用
當找到條形碼時,會執行代理方法
- (void) imagePickerController: (UIImagePickerController*) reader didFinishPickingMediaWithInfo: (NSDictionary*) info
最後讀取并顯示了條形碼的圖檔和内容。*/
ZBarReaderViewController *readerVC = [[ZBarReaderViewController alloc] init];
readerVC.readerDelegate = self;
readerVC.supportedOrientationsMask = ZBarOrientationMaskAll;
ZBarImageScanner *scanner = readerVC.scanner;
[scanner setSymbology:ZBAR_I25
config:ZBAR_CFG_ENABLE
to:0];
[self presentModalViewController:readerVC animated:YES];
[readerVC release];
}
代理方式實作如下(這裡隻是簡單的實作):
- (void) imagePickerController: (UIImagePickerController*) reader
didFinishPickingMediaWithInfo: (NSDictionary*) info
{
id<NSFastEnumeration> results =
[info objectForKey: ZBarReaderControllerResults];
ZBarSymbol *symbol = nil;
for(symbol in results)
break;
imageView.image =
[info objectForKey: UIImagePickerControllerOriginalImage];
[reader dismissModalViewControllerAnimated: YES];
resultLabel.text = symbol.data ;
}
這樣就能實作掃描二維碼了。
2.生成二維碼 生成二位碼需要用到另一個庫libqrencode,這個庫我是從别人的例子中拿過來的,沒有直接連結,我上傳一下吧: http://download.csdn.net/detail/sjx19871225/5065683
下載下傳之後直接拖入工程中即可。 需要添加架構QuartzCore.framework。引入頭檔案: #import "QRCodeGenerator.h"。 生成二維碼代碼如下:
-(void)createQRcode:(id)sender
{
/*字元轉二維碼
導入 libqrencode檔案
引入頭檔案#import "QRCodeGenerator.h" 即可使用
*/
imageView.image = [QRCodeGenerator qrImageForString:field.text imageSize:imageView.bounds.size.width];
}
參考:http://blog.csdn.net/xialibing103/article/details/8011904 http://code4app.com/ios/二維碼掃描和生成/501a70f16803fa1c73000000(參考的代碼,可以下載下傳這個例子,很清楚)