学习iOS开发之扫描二维码

今天查阅资料了很久,终于搞定了扫描二维码功能。

扫描二维码我用的是ZBar库。从网上下载下来ZBar SDK(下载地址:http://download.csdn.net/detail/wall_cow_ly/7168219)。将文件夹直接添加到项目中即可。在TARGETS / General / Linked Frameworks and Libraries下添加AVFoundation.framework、CoreMedia.framework、CoreVideo.framework、QuartzCore.framework、libiconv.dylib和libzbar.a这些库。

做好准备工作,我们新建一个视图控制器,在其上添加一个按钮和一个标签。点击按钮,就会显示扫描视图。标签是用来显示扫描结果的。

- (void)viewDidLoad
{
    [super viewDidLoad];
    //创建按钮
    UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(100, 20, 100, 100)];
    [button setTitle:@"扫描" forState:UIControlStateNormal];
    button.backgroundColor = [UIColor cyanColor];
    [self.view addSubview:button];
    [button addTarget:self action:@selector(onClick) forControlEvents:UIControlEventTouchUpInside];
    //创建标签
    self.label = [[UILabel alloc] initWithFrame:CGRectMake(100, [UIScreen mainScreen].applicationFrame.size.height-100, 100, 100)];
    [self.view addSubview:self.label];
}
创建扫描视图ZBarReaderView的实例之前,我们在视图控制器头文件中导入ZBarSDK.h,并为其添加一个属性ZBarReaderView *readerView。还要实现ZBarReaderViewDelegate代理协议,通过里面的代理方法来获得扫描结果。

点击按钮,执行onClick方法,创建ZBarReaderView扫描视图,然后设置它的一些属性,详见代码注释。最后执行[readerView start]开始扫描。

//点击执行
-(void)onClick{
    self.label.text = @"";
    //创建扫描视图
    readerView = [[ZBarReaderView alloc] init];
    //设置大小
    readerView.frame = CGRectMake(0, 120,[UIScreen mainScreen].applicationFrame.size.width,[UIScreen mainScreen].applicationFrame.size.width);
    //设置代理
    readerView.readerDelegate = self;
    //不开闪光灯
    readerView.torchMode = 0;
    //设置方框颜色
    readerView.trackingColor = [UIColor greenColor];
    [self.view addSubview:readerView];
    //开始扫描
    [readerView start];
}
实现readerView:didReadSymbols:fromImage:代理方法,来获得扫描到的数据。
//扫描到二维码后执行的代理方法
- (void)readerView:(ZBarReaderView *)readerView didReadSymbols:(ZBarSymbolSet *)symbols fromImage:(UIImage *)image
{
    NSString *result = nil;
    //遍历符号集合,获得符号
    for (ZBarSymbol *symbol in symbols) {
        NSLog(@"%@", symbol.data);
        result = symbol.data;
        break;
    }
    self.label.text = result;
    //停止扫描视图
    //[self.readerView stop];
}
在这里我们扫描到后,就将结果显示在标签上面。

最后在应用程序代理累中创建并添加视图控制器。

    TestViewController *vc = [[TestViewController alloc] init];
    self.window.rootViewController = vc;
运行,我随便对着网页上生成的二维码扫描,结果正确。


运行结果截图:




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值