iOS ZBarSDK 用ZBarReaderView自定义二维码扫描界面
来源:互联网 发布:电脑网络怎么连接不了 编辑:程序博客网 时间:2024/05/17 23:21
转自:http://blog.sina.com.cn/s/blog_b8e976830101cpr7.html
ZBar为我们提供了两种使用方式,一种是直接调用ZBar提供的ZBarReaderViewController
ZBar使用起来也非常简单,将ZBarSDK导入项目,在需要使用ZBar的文件中导入ZBarSDK.h头文件即可,以下是ZBarReaderView的初始化方法:
ZBarReaderViewreaderView = [[ZBarReaderViewalloc]init];
readerView.frame= CGRectMake(0, 44,self.view.frame.size.width,self.view.frame.size.height - 44);
readerView.readerDelegate= self;
//关闭闪光灯
readerView.torchMode= 0;
//扫描区域
CGRectscanMaskRect= CGRectMake(60,CGRectGetMidY(readerView.frame) - 126, 200, 200);
//处理模拟器
if(TARGET_IPHONE_SIMULATOR) {
ZBarCameraSimulator *cameraSimulator
= [[ZBarCameraSimulatoralloc]initWithViewController:self];
cameraSimulator.readerView = readerView;
}
[self.view addSubview:readerView];
//扫描区域计算
readerView.scanCrop= [selfgetScanCrop:scanMaskRectreaderViewBounds:self.readerView.bounds];
[readerView start];
readerView.frame
readerView.readerDelegate
//关闭闪光灯
readerView.torchMode
//扫描区域
CGRectscanMaskRect
//处理模拟器
if
}
[self.view addSubview:readerView];
//扫描区域计算
readerView.scanCrop
[readerView start];
以上代码需要说明的有以下几点:
- 闪光灯设置
我不希望在扫描二维码时开启闪光灯,所以将ZBarReaderView的torchMode设为0,你可以将它设置为其他任何合适的值。 - 扫描区域计算
这点比较重要,我们常用的二维码扫描软件的有效扫描区域一般都是中央区域,其他部分是不进行扫描的,ZBar可以通过ZBarReaderView的scanCrop属性设置扫描区域,它的默认值是CGRect(0,0, 1,1),表示整个ZBarReaderView区域都是有效的扫描区域。我们需要把扫描区域坐标计算为对应的百度分数坐标,也就是以上代码中调用的getScanCrop:readerViewBounds方法,亲测没有问题,如下所示:
-(CGRect)getScanCrop:(CGRect)rectreaderViewBounds:(CGRect)readerViewBounds
{
CGFloatx,y,width,height;
x = rect.origin.x / readerViewBounds.size.width;
y = rect.origin.y / readerViewBounds.size.height;
width = rect.size.width / readerViewBounds.size.width;
height = rect.size.height / readerViewBounds.size.height;
return CGRectMake(x,y, width, height);
}
{
}
PS:在网上找到很多这个方法都是将横坐标和纵坐标交叉,这样是有问题的,仔细想一下就会明白。
初始化部分完成之后,就可以调用ZBarReaderView的start方法开始扫描了,需要让你的类实现ZBarReaderViewDelegate协议,在扫描到二维码时会调用delegate的对应方法。最后,当二维码已经识别时候,可以调用ZBarReaderView的stop方法停止扫描。如下所示:
- (void)readerView:(ZBarReaderView *)readerViewdidReadSymbols:(ZBarSymbolSet *)symbolsfromImage:(UIImage *)image
{
for (ZBarSymbol *symbol in symbols) {
NSLog(@"%@", symbol.data);
break;
}
[self.readerView stop];
}
{
}
1 0
- iOS ZBarSDK 用ZBarReaderView自定义二维码扫描界面
- iOS ZBarSDK 用ZBarReaderView自定义二维码扫描界面
- IOS 自定义ZbarSDK扫描界面
- iOS 二维码扫描 ZBarSDK
- IOS 使用 ZbarSDK 二维码扫描
- 二维码框架ZBarSDK的使用和自定义二维码扫描界面方法
- 二维码框架ZBarSDK的使用和自定义二维码扫描界面方法
- 二维码框架ZBarSDK的使用和自定义二维码扫描界面方法
- 二维码框架ZBarSDK的使用和自定义二维码扫描界面方法
- iOS 使用ZBarSDK扫描条形码和二维码
- iOS 使用ZBarSDK扫描条形码和二维码
- iOS 使用ZBarSDK扫描条形码和二维码
- iOS 使用ZBarSDK扫描条形码和二维码
- 二维码自定义扫描界面
- iOS中使用ZBar扫描二维码自定义扫描界面
- iOS中使用ZBar扫描二维码自定义扫描界面
- iOS中使用ZBar扫描二维码自定义扫描界面
- iOS中使用ZBar扫描二维码自定义扫描界面
- 1月8号14点———学习笔记
- 黑马程序员_JavaIO学习笔记
- SSH集成p6spy
- 【PAT】
- 获取客户端IP
- iOS ZBarSDK 用ZBarReaderView自定义二维码扫描界面
- Android笔记访问SharedPreferences中的数据
- CListCtrl
- putty
- android客户端从服务器端获取json数据并解析的实现代码
- java关键字final与static总结
- Android中visibility属性VISIBLE、INVISIBLE、GONE的区别
- 三角形类型判断
- 解决yum安装出现错误:Cannot retrieve metalink for repository: epel. Please verify its path and try again