ZBarReaderView (转)

ZBar为我们提供了两种使用方式,一种是直接调用ZBar提供的ZBarReaderViewController打开一个扫描界面,另一种方式是使用ZBar提供的可以嵌在其他视图中的ZBarReaderView,实际项目中我们更可能会使用第二种方式,这可以让我们对界面做更多的定制。

ZBar使用起来也非常简单,将ZBarSDK导入项目,在需要使用ZBar的文件中导入ZBarSDK.h头文件即可,以下是ZBarReaderView的初始化方法:

ZBarReaderView readerView = [[ZBarReaderView alloc]init];
readerView.frame = CGRectMake(0, 44,
self.view.frame.size.width,
self.view.frame.size.height - 44);

readerView.readerDelegate = self;

//关闭闪光灯
readerView.torchMode = 0;
//扫描区域
CGRect
scanMaskRect = CGRectMake(60,
CGRectGetMidY(readerView.frame) - 126, 200, 200);

//处理模拟器
if (TARGET_IPHONE_SIMULATOR) {

ZBarCameraSimulator *cameraSimulator

= [[ZBarCameraSimulator
alloc]initWithViewController:self];
   
cameraSimulator.readerView = readerView;

}
[self.view addSubview:readerView];
//扫描区域计算
readerView.scanCrop = [self
getScanCrop:scanMaskRect
readerViewBounds:self.readerView.bounds];

[readerView start];

以上代码需要说明的有以下几点:

  1. 闪光灯设置
    我不希望在扫描二维码时开启闪光灯,所以将ZBarReaderView的torchMode设为0,你可以将它设置为其他任何合适的值。
  2. 扫描区域计算
    这点比较重要,我们常用的二维码扫描软件的有效扫描区域一般都是中央区域,其他部分是不进行扫描的,ZBar可以通过ZBarReaderView的scanCrop属性设置扫描区域,它的默认值是CGRect(0,
    0, 1,
    1),表示整个ZBarReaderView区域都是有效的扫描区域。我们需要把扫描区域坐标计算为对应的百度分数坐标,也就是以上代码中调用的getScanCrop:readerViewBounds方法,亲测没有问题,如下所示:

-(CGRect)getScanCrop:(CGRect)rect
readerViewBounds:(CGRect)readerViewBounds
{
    CGFloat
x,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 *)readerView
didReadSymbols:(ZBarSymbolSet *)symbols
fromImage:(UIImage *)image
{
 
  for (ZBarSymbol *symbol in symbols) {

NSLog(@"%@", symbol.data);
     
  break;
    }
    
 
  [self.readerView stop];
}

时间: 2024-08-28 08:05:15

ZBarReaderView (转)的相关文章

IOS开发之ZBarReaderView的使用

IOS开发之ZBarReaderView的使用 HOMEABOUTGUESTBOOKCATEGORIESTAGSLINKSSUBSCRIBE 当开发IOS程序中需要用到二维码识别功能的时候,zbar这个开源库估计会被不少人选择.但是关于zbar的用法,网上的资料大部分都集中在ZBarReaderViewController这个类的使用上.本人在使用中,发现ZBarReaderViewController这 个类使用很不灵活,比如,如果需要对界面做一些自定义的定制时会变得很麻烦.在zbar的头文件

关于ZBarReaderView 打开闪光灯

关于ZBarReaderView 打开闪光灯 ZBarReaderView *readerView; - (void)changeLight:(id)sender{ UIButton *btn = (UIButton *)sender; if (btn.selected) { btn.selected = NO; readerView.torchMode = 0; }else{ btn.selected = YES; readerView.torchMode = 1; } }

二维码ZBar之ZBarReaderView

参考:http://www.chinatarena.com/Html/iospeixun/201301/3985.html   http://blog.csdn.net/chenyong05314/article/details/8844549 当开发IOS程序中需要用到二维码识别功能的时候,zbar这个开源库估计会被不少人选择.但是关于zbar的用法,网上的资料大部分都集中在ZBarReaderViewController这个类的使用上.达内IOS培训老师在使用中,发现ZBarReaderVi

使用ZBarSDK生成和读取二维码

1.下载ZBarSDK,下载地址:http://zbar.sourceforge.net/iphone/index.html2.新建项目,导入ZBarSDK,并添加下列frameworkCoreMedia.frameworkCoreVideo.frameworkAVFoundation.frameworkQuartzCore.frameworklibiconv.dyliblibzbar.a3.扫瞄二维码(全屏)(1)在viewController界面导入头文件 #import"ZBarSDK.h

二维码框架ZBarSDK的使用和自己定义二维码扫描界面方法

假设你不知道ZBarSDK怎么用,请下载demo http://download.csdn.net/detail/u013686641/7858917 假设你已经配置好ZBarSDK .那么以下这个类能够直接用 以下是效果图 // //  头文件 //  TestProject // #import <UIKit/UIKit.h> #import "ZBarSDK.h" @interface yxpQrCode :UIViewController @end // //  实

IOS 使用 ZbarSDK 二维码扫描

1. 下载SDK   https://github.com/bmorton/ZBarSDK 2. 引用到项目中 3. 添加引用 4. AppDelegate中添加下面代码 5. 在需要使用扫描的controller中实现ZBarReaderViewDelegate 6. 对应的m文件中 #import "ViewController.h" @interface ViewController () { UITextField *resultText; ZBarReaderView *re

iOS 二维码

基本上我们做二维码的实现方法有三大途径:ZBar.ZXing.AVFoundation. 第一种:ZBar 1.下载ZBarSDK,并且导入到工程里面 2.导入依赖库: QuartzCore.framework.CoreVideo.framework.CoreMedia.framework.AVFoundation.framework 3.如果报does not contain bitcode,请点击这里 4.Zbar有两种方式: 1>方式是常规的方式,通过ZBarReaderViewContr

二维码扫描(iOS原生二维码扫描)

一.关于二维码扫描的第三方库有很多:例如比较常用的两个 1.ZBar SDK ZBar为我们提供了两种使用方式,一种是直接调用ZBar提供的ZBarReaderViewController打开一个扫描界面,另一种方式是使用ZBar提供的可以嵌在其他视图中的ZBarReaderView,实际项目中我们更可能会使用第二种方式,这可以让我们对界面做更多的定制,详细的百度查找相关文档来看. 2.ZXing(Github镜像地址)是一个开源的条码生成和扫描库(开源协议为Apache2.0).它不但支持众多

二维码扫描与生成

为了方便下载挂一个百度盘链接,包含: 1.ZBarSDK .a文件(armv7 arm64和armv7 arm64 i386两种,如有其他需求请自行生成) 2.ZBarSDK 3.libqrencode 4.ZBar相机扫描 相册扫描 iOS原生相机扫描 和 libqrencode生成二维码示例程序 (一)二维码扫描之ZBarSDK的使用 1.1 生成.a文件 (1)打开ZBar-master/iphone/zbar.xcodeproj (2)更改Architectures (3)如果弹出警告,