iOS中使用zxing实现扫一扫

  1. 下载ZXing
    ZXing是一个开源的条码生成和扫描库(基于Apache2.0的开源协议),github地址是:https://github.com/zxing/zxing ,它支持多种语言:java,C++,Objective-C以及Ruby等。那么我们从github或者google code上把源码下载下来。
  2. 裁剪目录
    因为ZXing的源码包含众多语言,但是因为我们是在IOS项目中使用,所以需要进行裁剪以减小体积,只保留如下目录:zxing/cpp/core/src/zxing和zxing/iphone/ZXingWidget,这样儿,体积会小很多。简单说下,zixing/iphone目录下有三个目录,Barcodes:这个是一个完整的ZXing的IOS App,可以在App Store里下载的到,ZXingWidget是一个我们可以引入的库,而ScanTest是ZXingWidget的一个简单demo app,当然,我们是要使用ZXing来做二维码开发,所以我们只需要保留ZXingWidget即可。
  3. 将ZXing集成到Xcode工程中
    a. 将裁减后的zxing文件夹整个拷贝到我们的项目根目录下,然后将ZXingWidge.xcodeproj文件拖拽到我们的工程中,在弹出的对话框中选择Copy items。
    b. 选中我们的xcode项目,选择Build Phases选项卡,然后增加 Target Dependencies 和 Link binary,展开Target Dependencies,添加ZXingWidget,展开Link Binary With Libraries,增加如下framework依赖:
    *libZXingWidget.a
    * AVFoundation
        * AudioToolbox
        * CoreVideo
        * CoreMedia
        * libiconv
        * AddressBook
        * AddressBookUI

    c. 再然后就是在Build Settings中设置header search paths:
    ./zxing/iphone/ZXingWidget/Classes  设置为循环查找
    ./zxing/cpp/core/src设置为非循环查找
  4. 使用方法
    完成了上述步骤之后,我们就完成了在我们的项目中集成ZXing了,那么接下来就是在我们的项目中使用ZXing了,这里有两种方法,第一种使用简单,但可定制化程度低,第二种使用略微复杂,但具备高度可定制化,我们的教程里使用的是第一种较为简单的方式:
    ZXing提供了一个扫描二维码的View Controller,即ZXingWidgetController。在需要使用的界面代码中,加入如下文件依赖:
    [cpp]  view plain  copy
    1. #import <ZXingWidgetController.h>  
    2. #import <QRCodeReader.h>  
    然后在需要扫描的地方,例如按下按钮扫描,添加如下代码:
    [cpp]  view plain  copy
    1. - (IBAction)scanPressed:(id)sender {  
    2.   ZXingWidgetController *widController = [[ZXingWidgetController alloc] initWithDelegate:self showCancel:YES OneDMode:NO];  
    3.   NSMutableSet *readers = [[NSMutableSet alloc ] init];  
    4.   QRCodeReader* qrcodeReader = [[QRCodeReader alloc] init];  
    5.   [readers addObject:qrcodeReader];  
    6.   [qrcodeReader release];  
    7.   widController.readers = readers;  
    8.   [readers release];  
    9.   [self presentModalViewController:widController animated:YES];  
    10.   [widController release];  
    11. }  
    一旦扫描有了结果,就会调用如下的回调函数:
    [cpp]  view plain  copy
    1. @protocol ZXingDelegate  
    2. - (void)zxingController:(ZXingWidgetController*)controller didScanResult:(NSString *)result;  
    3. - (void)zxingControllerDidCancel:(ZXingWidgetController*)controller;  
    4. @end  

  5. 总结
    确实没有什么特别高的难度,同时,官方的READ.md文件(位于iphone目录下)对于如何集成的步骤也说的特别详细,所以,不管是什么语言什么资料,官方的文档首先要学会看清楚。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值