导入ZBarSDK文件并引入一下框架

AVFoundation.framework

CoreMedia.framework

CoreVideo.framework

QuartzCore.framework

libiconv.dylib

引入头文件#import “ZBarSDK.h”即可使用

当找到条形码时,会执行代理方法

废话不多说,直接上代码

//

// LQXZBarViewController.m

// erweim

//

// Created by 刘祺旭 on 15/9/9.

// Copyright (c) 2015年 刘祺旭. All rights reserved.

//

import "LQXZBarViewController.h"

@interface LQXZBarViewController ()

{

BOOL is_Anmotion;

ZBarReaderViewlqxreadview;

UIImageView
lqxscanZomeBack;

UIImageView*lqxreadLineView;

}

@end

@implementation LQXZBarViewController

  • (void)viewDidLoad {

    [super viewDidLoad];

    [self InitScan];

    [self loopDrawLine];

    }

pragma mark 初始化扫描

  • (void)InitScan

    {

    lqxreadview = [ZBarReaderView new];

    lqxreadview.backgroundColor = [UIColor clearColor];

    lqxreadview.frame = CGRectMake(187.5 - 150, 333.5 - 150, 300, 300);

    lqxreadview.readerDelegate = self;

    lqxreadview.allowsPinchZoom = YES;//使用手势变焦

    lqxreadview.trackingColor = [UIColor redColor];

    lqxreadview.showsFPS = NO;// 显示帧率 YES 显示 NO 不显示

    lqxreadview.scanCrop = CGRectMake(50, 50, 50, 50);//将被扫描的图像的区域

    UIImage *hbImage=[UIImage imageNamed:@"框.png"];

    lqxscanZomeBack=[[UIImageView alloc] initWithImage:hbImage];

    //添加一个背景图片

    CGRect mImagerect=CGRectMake((lqxreadview.frame.size.width-200)/2.0, (lqxreadview.frame.size.height-200)/2.0, 200, 200);

    [lqxscanZomeBack setFrame:mImagerect];

    lqxreadview.scanCrop = [self getScanCrop:mImagerect readerViewBounds:lqxreadview.bounds];//将被扫描的图像的区域

    [lqxreadview addSubview:lqxscanZomeBack];

    [lqxreadview addSubview:lqxreadLineView];

    [self.view addSubview:lqxreadview];

    [lqxreadview start];

}

pragma mark 获取扫描区域

-(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);

}

pragma mark 扫描动画

-(void)loopDrawLine

{

CGRect  rect = CGRectMake(lqxscanZomeBack.frame.origin.x, lqxscanZomeBack.frame.origin.y, lqxscanZomeBack.frame.size.width, 2);
if (lqxreadLineView) {
[lqxreadLineView removeFromSuperview];
}
lqxreadLineView = [[UIImageView alloc] initWithFrame:rect];
lqxreadLineView.backgroundColor = [UIColor redColor];
[lqxreadLineView setImage:[UIImage imageNamed:@"线.jpg"]];
[UIView animateWithDuration:3.0
delay: 0.0
options: UIViewAnimationOptionCurveEaseIn
animations:^{
//修改fream的代码写在这里
lqxreadLineView.frame =CGRectMake(lqxscanZomeBack.frame.origin.x, lqxscanZomeBack.frame.origin.y+lqxscanZomeBack.frame.size.height, lqxscanZomeBack.frame.size.width, 2);
[lqxreadLineView setAnimationRepeatCount:0]; }
completion:^(BOOL finished){
if (!is_Anmotion) { [self loopDrawLine];
} }]; [lqxreadview addSubview:lqxreadLineView];

}

pragma mark 获取扫描结果

  • (void)readerView:(ZBarReaderView *)readerView didReadSymbols:(ZBarSymbolSet *)symbols fromImage:(UIImage *)image

    {

    // 得到扫描的条码内容

    const zbar_symbol_t *symbol = zbar_symbol_set_first_symbol(symbols.zbarSymbolSet);

    NSString *symbolStr = [NSString stringWithUTF8String: zbar_symbol_get_data(symbol)];

    if (zbar_symbol_get_type(symbol) == ZBAR_QRCODE) {

      [[UIApplication sharedApplication] openURL:[NSURL URLWithString:symbolStr]];

    }

    for (ZBarSymbol *symbol in symbols) {

    break;

    }

    [readerView stop];

    is_Anmotion = YES;

    [readerView removeFromSuperview];

}

  • (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

    }

/*

pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation

  • (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

    // Get the new view controller using [segue destinationViewController].

    // Pass the selected object to the new view controller.

    }

    */

@end

iOS ZBar扫码简单实现的更多相关文章

  1. ios zxing扫码问题

    在ios 中 扫瞄二维码,条形码基本有 2中第三方的库,一个是zbar 一个是zxing,zxing 在android中表现的比较出色,但是在ios 中不是很好用,扫瞄效率低,我们一般都用zbar,但 ...

  2. ios ZBar扫二维码奇奇怪怪的错误

    Undefined symbols for architecture armv7: "_CVPixelBufferGetHeight", referenced from: -[ZB ...

  3. ionic3 实现扫码功能

    ionic3 通过插件phonegap-plugin-barcodescanner,调用机器硬件摄像头实现扫码功能. 首先当然先了解下 phonegap-plugin-barcodescanner,这 ...

  4. 最简单的基于FFmpeg的移动端例子:IOS 视频转码器

    ===================================================== 最简单的基于FFmpeg的移动端例子系列文章列表: 最简单的基于FFmpeg的移动端例子:A ...

  5. 安卓扫码:简单的ZXing使用记录

    ZXing是Google提供的条形码.二维码等的生成.解析的库.最近工作需求去研究了一下,主要是研究怎么扫描二维码(QRCode).网上教程也不少,但大多看了不明所以,甚至看了半天都不知道解码到底从哪 ...

  6. iOS Swift WisdomScanKit二维码扫码SDK,自定义全屏拍照SDK,系统相册图片浏览,编辑SDK

    iOS Swift WisdomScanKit 是一款强大的集二维码扫码,自定义全屏拍照,系统相册图片编辑多选和系统相册图片浏览功能于一身的 Framework SDK [1]前言:    今天给大家 ...

  7. iOS开发——iOS7(及以后版本) SDK自带二维码(含条形码)扫码、二维码生成

    本文转载至 http://www.cnblogs.com/leotangcn/p/4357907.html 现在很多APP都涉及了二维码扫码功能,这个功能简单实用,很多情况下用户乐于使用,现在本文带来 ...

  8. 最简单的基于FFmpeg的移动端样例:IOS 视频转码器

    ===================================================== 最简单的基于FFmpeg的移动端样例系列文章列表: 最简单的基于FFmpeg的移动端样例:A ...

  9. 通过扫码打开IOS的App Store下载APP(Android版暂时没找到解决方法)

    项目需求:扫码根据不同平台下载不同版本的APP.主要是ios和Android. 网上找了很多,前面判断平台的代码很容易找到,但是后面的就有些坑了.有的人的是根本跑不通.有的是代码补全. 下面是 微信扫 ...

随机推荐

  1. 【jsp exception】如何处理jsp页面的错误

    根据jsp对错误的处理方式不同可以将其分为局部异常处理和全局异常处理.局部异常处理适用于个别jsp页面,当这些页面发生错误后,采取特殊的处理方式:全局异常处理适用于所有jsp页面,当所有页面发生某些指 ...

  2. Exams

    Exams time limit per test 1 second memory limit per test 256 megabytes input standard input output s ...

  3. 优化eclipse

    1.取消自动validation windows–>perferences–>validation 除开Manual下面的复选框全部选中之外,其他全部不选 如需验证,在要验证的文件上,单击 ...

  4. 怎样解决VS2013模块对于SAFESEH 映像是不安全的

    今天在使用VS2013编译一个控制台应用程序时出现了:error LNK2026 模块对于 SAFESEH 映像是不安全的,按照以下步骤轻松解决了. 打开该项目的“属性页”对话框,然后单击“链接器”- ...

  5. PullToRefreshGridView上拉加载、下拉刷新

    eclipse中的项目: //注意:此刷新功能是使用的第三方的PullToRefreshScrollView,因此需要导入第三方library作为依赖 步骤:导入第三方library,依赖:点击你的应 ...

  6. Xcode如何简单安装Alcatraz

    1.最简单直接,直接到github获取该项目 地址:www.github.com,搜索Alcatraz: 2.通过Xcode打开该项目,编译success后,退出Xcode,再启动,再弹出框选择loa ...

  7. java数据类型,hibernate数据类型,标准sql数据类型之间的对应表

    Hibernate API简介 其接口分为以下几类: l         提供访问数据库的操作的接口: l         用于配置Hibernate的接口: l         回调接口 l     ...

  8. Jfreet 自动删除生成的图片

    jfreechart有自动删除的啊,会话失效就会自动删除的,我刚测试了啊,在web.xml里注册 <listener> <listener-class>org.jfree.ch ...

  9. linux系统下c程序分多文件实现

    对于一个整数数组排序,按从小到大排序,数组元素个数不定.要求多文件实现 1,排序的函数作为一个文件 输出结果作为一个程序 主函数作为一个文件 运行程序 gcc -o main main.c paixu ...

  10. PAT (Advanced Level) 1064. Complete Binary Search Tree (30)

    因为是要构造完全二叉树,所以树的形状已经确定了. 因此只要递归确定每个节点是多少即可. #include<cstdio> #include<cstring> #include& ...