苹果公司升级到IOS7后自己的PassBook自带二维码扫描功能,所以现在使用二维码功能不需要在借助第三方库了

使用前请先导入AVFoundation.frameWork

//

//  YHQViewController.m

//  ReadQRCode

//

//  Created by apple on 13-12-22.

//  Copyright (c) 2013年 apple. All rights reserved.

//

#import "YHQViewController.h"

#import <AVFoundation/AVFoundation.h>

@interfaceYHQViewController ()<AVCaptureMetadataOutputObjectsDelegate>

// IBOutletUILabel *captureLabe是自己建立的storyBoard中的Label用于显示获取到的二维码的信息的连线

@property (weak, nonatomic) IBOutletUILabel *captureLabel;

@property(strong,nonatomic) AVCaptureSession *session; // 二维码生成的绘画

@property(strong,nonatomic)  AVCaptureVideoPreviewLayer *previewLayer;  // 二维码生成的屠城

@end

@implementation YHQViewController

- (void)viewDidLoad

{

[superviewDidLoad];

}

#pragma mark - 读取二维码

- (void)readQRcode

{

// 1. 摄像头设备

AVCaptureDevice *device = [AVCaptureDevicedefaultDeviceWithMediaType:AVMediaTypeVideo];

// 2. 设置输入

// 因为模拟器是没有摄像头的,因此在此最好做一个判断

NSError *error = nil;

AVCaptureDeviceInput *input = [AVCaptureDeviceInputdeviceInputWithDevice:device error:&error];

if (error) {

NSLog(@"没有摄像头-%@", error.localizedDescription);

return;

}

// 3. 设置输出(Metadata元数据)

AVCaptureMetadataOutput *output = [[AVCaptureMetadataOutputalloc] init];

// 3.1 设置输出的代理

// 说明:使用主线程队列,相应比较同步,使用其他队列,相应不同步,容易让用户产生不好的体验

[output setMetadataObjectsDelegate:selfqueue:dispatch_get_main_queue()];

//    [output setMetadataObjectsDelegate:self queue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)];

// 4. 拍摄会话

AVCaptureSession *session = [[AVCaptureSessionalloc] init];

// 添加session的输入和输出

[session addInput:input];

[session addOutput:output];

// 4.1 设置输出的格式

// 提示:一定要先设置会话的输出为output之后,再指定输出的元数据类型!

[output setMetadataObjectTypes:@[AVMetadataObjectTypeQRCode]];

// 5. 设置预览图层(用来让用户能够看到扫描情况)

AVCaptureVideoPreviewLayer *preview = [AVCaptureVideoPreviewLayerlayerWithSession:session];

// 5.1 设置preview图层的属性

[preview setVideoGravity:AVLayerVideoGravityResizeAspectFill];

// 5.2 设置preview图层的大小

[preview setFrame:self.view.bounds];

// 5.3 将图层添加到视图的图层

[self.view.layerinsertSublayer:preview atIndex:0];

self.previewLayer = preview;

// 6. 启动会话

[session startRunning];

self.session = session;

}

#pragma mark - 输出代理方法

// 此方法是在识别到QRCode,并且完成转换

// 如果QRCode的内容越大,转换需要的时间就越长

- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection

{

// 会频繁的扫描,调用代理方法

// 1. 如果扫描完成,停止会话

[self.sessionstopRunning];

// 2. 删除预览图层

[self.previewLayerremoveFromSuperlayer];

NSLog(@"%@", metadataObjects);

// 3. 设置界面显示扫描结果

if (metadataObjects.count > 0) {

AVMetadataMachineReadableCodeObject *obj = metadataObjects[0];

// 提示:如果需要对url或者名片等信息进行扫描,可以在此进行扩展!

_captureLabel.text = obj.stringValue;

}

}

// 在storyBoard中添加的按钮的连线的点击事件,一点击按钮就提示用户打开摄像头并扫描

- (IBAction)capture {

//扫描二维码

[selfreadQRcode];

}

@end

ios7下二维码功能的实现的更多相关文章

  1. 对于ios7扫描二维码功能的实现

    在ios7曾经,我们开发二维码扫描,或者生产都须要借助第三方的开源库进行开发. 然后升级到ios7时,在passbook中苹果自带二维码扫描功能,并且扫描速度很快,秒杀一切第三方开源库. 所以,我们做 ...

  2. Android二维码功能实现,在程序内嵌入ZXing项目

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9526247 最近二维码真是越来越火了,随便电视上.网络上.商场里,到处都是二维码. ...

  3. FastReport 中添加二维码功能.(Delphi)

    http://www.cnblogs.com/fancycloud/archive/2011/07/24/2115240.html FastReport 中添加二维码功能.(Delphi)   在实际 ...

  4. Android下二维码的扫描

    Android平台下 二维码的扫描一般采用: Zxing:参考地址 Zxing功能比较强大,支持条形码和二维码的扫描,用的人也比较多,但是Zxing太大,一般开发简单的app,用起来比较麻烦. 所以网 ...

  5. iOS--iOS7摄像头识别二维码功能

    iOS–iOS7摄像头识别二维码功能 属性介绍: AVFoundation 框架基于以下几个类实现图像捕捉 ,通过这些类可以访问来自相机设备的原始数据并控制它的组件. AVCaptureDevice ...

  6. shopnc 商家中心添加打印商品二维码功能

    需求中提到需要增加每一件商品可以打印,用于线下体验店实体商品的二维码标签,客人可以根据手机扫二维码功能进行购买 任务描述: 1.如附件实现”批量打印标签“和单个商品”打印“标签功能. 2.标签有两种” ...

  7. SNF开发平台WinForm-平板拍照及扫描二维码功能

    在我们做项目的时候,经常会有移动平板处理检验,审核等,方便移动办公.这时就需要在现场拍照上传问题,把当场问题进行上传,也有已经拍完照的图片或加工过的图片进行上传.还有在车间现场一体机,工控机 这种产物 ...

  8. Atitit.二维码功能的设计实践 attilax 总结

    Atitit.二维码功能的设计实践 attilax 总结 1.1. 二维码要实现的功能1 1.2. 现有二维码功能设计不足的地方(待改进)1 1.3. 二维码组件1 1.4. Java版  zxing ...

  9. 织梦dedecms页面中增加二维码功能的实现方法

    本文介绍了在dedecms中增加二维码功能的实现方法,有时需要在dedecms页面增加二维码,方便手机用户访问,有需要的朋友参考下. 本节内容: dedecms中增加二维码功能   1.打开/incl ...

随机推荐

  1. Apache Mina开发手冊之四

    Apache Mina开发手冊之四 作者:chszs,转载需注明. 博客主页:http://blog.csdn.net/chszs 一.Mina开发的主要步骤 1.创建一个实现了IoService接口 ...

  2. zoj 2229 Ride to School

    所有车子到达的总时间算出来,然后从小到大排序,如果:1. 开始时间 < 0 的,不予考虑,太快的赶不上,太慢的赶上也没用.2. 开始时间 > 0 的,Charley 和最早到达的车子一起到 ...

  3. 为什么C#动态调用Java的cxf多了bool型参数

    最近的一个项目需要C#调用Java的cxf发布的接口,接口参数文档只给我的是两个long型,但是通过我动态加载发现,参数是四个. 比如接口文档给的接口是 TestFunc(long, long); 而 ...

  4. BZOJ 1221: [HNOI2001] 软件开发(最小费用最大流)

    不知道为什么这么慢.... 费用流,拆点.... --------------------------------------------------------------------------- ...

  5. oracle 11g 物理内存 - 此先决条件将测试系统物理内存总量是否至少为 922MB (944128.0KB)

  6. HTML+CSS笔记 CSS中级 颜色&长度值

    颜色值 在网页中的颜色设置是非常重要,有字体颜色(color).背景颜色(background-color).边框颜色(border)等,设置颜色的方法也有很多种: 1.英文命令颜色 语法: p{co ...

  7. Cyclomatic complexity

    Cyclomatic Code Complexity was first introduced by Thomas McCabe in 1976. In 1976, Thomas McCabe pub ...

  8. 基于SIM 卡卡基不同制作工艺的研究

    1 国内外现行的SIM 卡卡基制作工艺 SIM 卡由卡基和芯片两部分组成.卡基上有植入芯片的台阶式芯片槽,SIM 卡的芯片通过多点焊接植入台阶式芯片槽之中与卡基组成SIM 卡,然后经过个性化数据处理, ...

  9. Protel99se生成gerber文件的方法

    这几天工作中遇到制作 gerber 的问题,确实让我郁闷了一 番,为了方便大家,不要再受其苦,特将这一过程写成文档供有这方面需要的同仁们参考. 1 protel99se 打开要生成 gerber 的 ...

  10. 使用 Media Center 遥控器(Windows Vista Premium)

    本文适用于安装了 Windows Vista Premium 并附带遥控器的 HP 和 Compaq 台式电脑. 本文简要介绍了三种Windows Media Center 遥控器上每个按钮的功能. ...