您的位置:首页 > 移动开发 > IOS开发

iOS中使用zxing实现扫一扫

2016-07-12 11:13 375 查看
下载ZXing

ZXing是一个开源的条码生成和扫描库(基于Apache2.0的开源协议),github地址是:https://github.com/zxing/zxing ,它支持多种语言:java,C++,Objective-C以及Ruby等。那么我们从github或者google
code上把源码下载下来。
裁剪目录

因为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即可。
将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设置为非循环查找
使用方法

完成了上述步骤之后,我们就完成了在我们的项目中集成ZXing了,那么接下来就是在我们的项目中使用ZXing了,这里有两种方法,第一种使用简单,但可定制化程度低,第二种使用略微复杂,但具备高度可定制化,我们的教程里使用的是第一种较为简单的方式:
ZXing提供了一个扫描二维码的View Controller,即ZXingWidgetController。在需要使用的界面代码中,加入如下文件依赖:

[cpp] view
plain copy

#import <ZXingWidgetController.h>  

#import <QRCodeReader.h>  

然后在需要扫描的地方,例如按下按钮扫描,添加如下代码:

[cpp] view
plain copy

- (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];  

}  

一旦扫描有了结果,就会调用如下的回调函数:

[cpp] view
plain copy

@protocol ZXingDelegate  

- (void)zxingController:(ZXingWidgetController*)controller didScanResult:(NSString *)result;  

- (void)zxingControllerDidCancel:(ZXingWidgetController*)controller;  

@end  

总结

确实没有什么特别高的难度,同时,官方的READ.md文件(位于iphone目录下)对于如何集成的步骤也说的特别详细,所以,不管是什么语言什么资料,官方的文档首先要学会看清楚。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: