天天看點

【iOS開發】---- 二維碼

        二維碼的使用已是非常廣泛了,不多說,直接入主題:

1.掃描二維碼

在ios中掃描二維碼的開源庫常見的有ZBar和ZXing,在網上看到說ZXing在ios中隻能實作掃描二維碼,不支援一維碼,是以,我就隻用ZBar開源庫了(有興趣的也可以嘗試ZXing),可以到github去下載下傳,下載下傳位址:https://github.com/bmorton/ZBarSDK。

下載下傳之後,将整個庫拖拽到你的工程之中,如下所示:

【iOS開發】---- 二維碼

然後往項目中添加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(參考的代碼,可以下載下傳這個例子,很清楚)