iOS 二维码demo,条形码demo

demo下载:http://download.csdn.net/download/qingsi00/5001589

如今二维码随处可见,无论是实物商品还是各种礼券都少不了二维码的身影。

而手机等移动设备又成为二维码的一个很好的应用平台,不管是生成二维码还是扫码二维码。

下面介绍一下如何在苹果iOS设备上使用二维码:


1. 扫描二维码(解码)
扫描二维码的开源库有很多如 ZBar、ZXing等。在此以ZBar作为例子构建二维码扫码应用。
首先在github上下载ZBar SDK   地址https://github.com/bmorton/ZBarSDK
打开压缩包,其中有ZBarSDK 文件夹   将ZBarSDK 文件夹包含到项目中来
(Finder)
(XCode)
其中包含一个libzbar.a的静态库。
接着往项目中添加Framework框架及链接库(动态库、静态库)。在项目属性TARGETS->Summary 中找到Linked Frameworks and Libraries
添加 AVFoundation.framwork, CoreMedia.framework, CoreVideo.framework, libiconv.dylib 和libzbar.a (如图)

iOS 二维码demo,条形码demo_第1张图片


然后在使用的地方引入头文件

#import "ZBarSDK.h"
调用ZBar的类必须实现ZBarReaderDelegate协议
如:UIViewController <ZBarReaderDelegate>

源文件如下:

- (BOOL)            application: (UIApplication*) application

  didFinishLaunchingWithOptions: (NSDictionary*) options

{

    self.window.rootViewController = self.tabBarController;

    [self.window makeKeyAndVisible];


    // force class to load so it may be referenced directly from nib

    [ZBarReaderViewController class];


    ZBarReaderViewController *reader =

        [self.tabBarController.viewControllers objectAtIndex: 0];

    reader.readerDelegate = self;

    reader.showsZBarControls = NO;

    reader.supportedOrientationsMask = ZBarOrientationMaskAll;


    return(YES);

}

// ZBarReaderDelegate


- (void)  imagePickerController: (UIImagePickerController*) picker

  didFinishPickingMediaWithInfo: (NSDictionary*) info

{

    // do something useful with results

    UITabBarController *tabs = self.tabBarController;

    tabs.selectedIndex = 1;

    ResultsViewController *results = [tabs.viewControllers objectAtIndex: 1];

    UIImage *image = [info objectForKey: UIImagePickerControllerOriginalImage];

    results.resultImage.image = image;


    id <NSFastEnumeration> syms =

    [info objectForKey: ZBarReaderControllerResults];

    for(ZBarSymbol *sym in syms) {

        results.resultText.text = sym.data;

        break;

    }

}

2. 生成二维码(编码)
在生成二维码的库中QREncoder 比较好用。ZXing库的android版本是带java版的编码库的但不知为何没有C++版的解码库,故在ios上也没法解码,如果应用中既要生成二维码又要扫描二维码就有可能要带两套不同的库。
首先同样是在github 上下载到SDK库
地址https://github.com/jverkoey/ObjQREncoder
解压后将源码库直接包含到项目中来(如图)


iOS 二维码demo,条形码demo_第2张图片

设置头文件路径,在TARGET中building settings  Search Path

当然也可以直接将库编译成静态库libQREcoder.a然后在包含进来

接着在Frameworks 中添加静态库的引用



然后在使用该库的地方包含头文件
#import <QREncoder/QREncoder.h>
注意:二维码显示的时候有可能会因为图像的大小而做调整,所以需要包含系统库QuartzCore.framework
最后就可以调用编码库了:

[cpp]  view plain copy
  1. UIImage* image = [QREncoder encode:@"http://www.baidu.com/"];  

iOS 二维码demo,条形码demo_第3张图片


注意demo中还没有生成二维码的代码,稍后加上。

demo下载: http://download.csdn.net/download/qingsi00/5001589

你可能感兴趣的:(ios,demo,二维码,条形码)