IOS第三十五天——使用ZXing开发二维码

最近合同到期了,然后谈薪资没谈拢,呵呵,不过也无所谓了,反正都要走了,外包公司,一般做个一年左右就差不多了,也确实挺锻炼人的,面试、出差、项目谈判、投标等等,当然,自己分内的项目也没耽误,同时还抽时间学习了python和IOS,感慨还是挺多的,昨天去面试了,除了有点儿远之外,其他的还是可以接受的。扯完闲篇,今天在家闲着没事儿就弄了下IOS的二维码扫描,这里简单记述一下过程。

  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。在需要使用的界面代码中,加入如下文件依赖:
    #import 
    #import 
    然后在需要扫描的地方,例如按下按钮扫描,添加如下代码:
    - (IBAction)scanPressed:(id)sender {
      ZXingWidgetController *widController = [[ZXingWidgetController alloc] initWithDelegate:self showCancel:YES OneDMode:NO];
      NSMutableSet *readers = [[NSMutableSet alloc ] init];
      QRCodeReader* qrcodeReader = [[QRCodeReader alloc] init];
      [readers addObject:qrcodeReader];
      [qrcodeReader release];
      widController.readers = readers;
      [readers release];
      [self presentModalViewController:widController animated:YES];
      [widController release];
    }
    一旦扫描有了结果,就会调用如下的回调函数:
    @protocol ZXingDelegate
    - (void)zxingController:(ZXingWidgetController*)controller didScanResult:(NSString *)result;
    - (void)zxingControllerDidCancel:(ZXingWidgetController*)controller;
    @end

  5. 总结
    确实没有什么特别高的难度,同时,官方的READ.md文件(位于iphone目录下)对于如何集成的步骤也说的特别详细,所以,不管是什么语言什么资料,官方的文档首先要学会看清楚。
  6. 题外话,最近几天在换工作了,诶,还是想好好做技术,但现在好像没有什么特别拿得出手的技能哈,可能打酱油时间过长了,anyway,想做点儿自己感兴趣的事儿,如果有合适的,跪求收留,嘿嘿。
2013年9月15日,Eric.Tang 记







你可能感兴趣的:(IOS开发--从零开始,ZXing,二维码)