天天看点

【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(参考的代码,可以下载这个例子,很清楚)