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目录下)对于如何集成的步骤也说的特别详细,所以,不管是什么语言什么资料,官方的文档首先要学会看清楚。
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目录下)对于如何集成的步骤也说的特别详细,所以,不管是什么语言什么资料,官方的文档首先要学会看清楚。
相关文章推荐
- iOS屏幕适配
- IOS中复制对象的用法及深拷贝和浅拷贝详解
- iiOS 上线后去掉打印
- IOS中消息传递的8种方式
- iOS 视频旋转及平移详解
- iOS开发笔记--iOS动画(Core Animation)总结
- iOS日常笔记
- IOS封装自定义Cell方法
- IOS Dev Intro - Variable property attributes or Modifiers in iOS
- iOS: 音效和音乐的播放,封装的工具类
- iOS设计模式(十) 享元模式
- IOS Dev Intro - Memory Management
- 《Motion Design for iOS》(三十四)
- 谈谈iOS Animation
- 李洪强iOS之Foundation框架—字符串
- iOS动画(Core Animation)总结
- ios常用的框架
- IOS 中获取手机的 udid 和 imei 号
- iOS 推送消息长度
- Xcode断点调试技巧