首先Zbar是开源的我们在github上可以下载到Zbar的 源文件 如:https://github.com/twotoasters/zbar 和 zbar的SDK :https://github.com/bmorton/ZBarSDK
源文件是用来生成SDK用的, 既然下载的静态库.a不能用,那我们直接用源文件生成.a文件 步奏如下:
1、打开下载的源文件并解压,找到里面的iphone文件夹,删除examples 文件夹,然后直接双击打开zbar.xcodeproj
2、选中工程--project--Build Settings --(搜索)Valid Architectures 添加 arm64;再添加armv7;再添加arm7s;再添加i386;再添加x86_64
选中工程--project--Build Settings --(搜索)Architectures 选中刚才设置的。
如图:
3、然后连上手机 选中手机commend +b编译 (此处有人说 不能连手机,但是我不练手机编译不成功,连上手机反倒成功了,所以出问题别找我哈).
4、工程目录Products下 libzbar.a右键 在find中查看就可以发现有两个文件夹 Debug-ipheos和Debugi-phonedimmulator可以去调试了.
5、如果要真机和模拟器静态库合并 在终端执行下面代码:
lipo -create + 真机.a文件 (此处有空格)+ 模拟器.a文件 + -output + 输出的合并文件。
lipo -create /Users/Jianyi_Tech/Desktop/JYZbar/JINTtanku/Debug-iphoneos/libzbar.a /Users/Jianyi_Tech/Desktop/JYZbar/JINTtanku/Debug-iphonesimulator/libzbar.a -output /Users/Jianyi_Tech/Desktop/JYZbar/JINTtanku/he/libzbar.a
ZBar的使用方法:
zbar给我们提供了两种 方法一个是创建一个VIew的扫描视图 ,一个是创建一个Viewcontorller的摄像机扫描控制器,我比较喜欢用一个view 方便控制视图的组件 所以只介绍第一种方法。
1、将ZbarSDK文件夹拖入工程 (其中包括 headers文件夹、libzbar.a文件和Resources文件夹)。
然后 代码如下:.h中
#import <UIKit/UIKit.h>
#import "ZBarSDK.h"
@interface JYZBarViewController : UIViewController<ZBarReaderViewDelegate>
@property (nonatomic,strong) ZBarReaderView *readerView;
@end
.m中如下
#import "JYZBarViewController.h"
@interface JYZBarViewController ()
@end
@implementation JYZBarViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
[self creatUI];
}
-(void)creatUI{
//创建扫描窗
_readerView = [[ZBarReaderView alloc]init];
_readerView.frame =self.view.frame;
[self.view addSubview:_readerView];
//设置代理
_readerView.readerDelegate = self;
//关闭闪光灯
_readerView.torchMode = 0;
//扫描区域计算 值范围是 0-1
// _readerView.scanCrop = CGRectMake(0.1, 0.1, 0.5, 0.5);
_readerView.scanCrop = [self scanCropRect1];
[_readerView start];//开始扫描
}
//条形码
-(CGRect)scanCropRect1{
float screenWide = [UIScreen mainScreen].bounds.size.width;
float screenHeight = [UIScreen mainScreen].bounds.size.height;
float scanCropWide = 200.0;
float scanCropHeight = screenHeight -44*2;
return CGRectMake( 44.0/screenHeight,((screenWide - scanCropWide)/2.0)/screenWide, scanCropHeight/screenHeight, scanCropWide/screenWide);
}
#pragma mark - <ZBarReaderViewDelegate>
- (void)readerView:(ZBarReaderView *)readerView didReadSymbols:(ZBarSymbolSet *)symbols fromImage:(UIImage *)image
{
for (ZBarSymbol *symbol in symbols) {
NSLog(@"-----%@", symbol.data);
break;
}
[self.readerView stop];
[self dismissViewControllerAnimated:YES completion:nil];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}