苹果公司升级到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. Linq to Sqlite连接

    本人还是挺喜欢用Sqlite,鼓捣半天终于连上了,赶紧记录一下 1.当然还是新建一个项目,还是winform, 2.Vs2012添加NoGet,点击工具--扩展和更新,搜索NoGet,安装. 3.管理 ...

  2. 在unity中用鼠标实现在场景中拖动物体,用鼠标滚轮实现缩放

    在场景中添加一个Plan,Camera,Directional Light,Cube.添加两个脚本scrollerScirpt(挂在Camera),CubeDragScript(挂在Cube上). 1 ...

  3. 现在输入 n 个数字, 以逗号, 分开; 然后可选择升或者 降序排序;

    /* 现在输入 n 个数字, 以逗号, 分开: 然后可选择升或者 降序排序: */ import java.util.*; public class bycomma{ public static St ...

  4. Windows 配置JAVA的环境变量

    Java是由Sun公司开发的一种应用于分布式网络环境的程序设计语言,Java语言拥有跨平台的特性,它编译的程序能够运行在多种操作系统平台上,可以实现“一次编写,到处运行”的强大功能. 工具/原料 JD ...

  5. Python keyword 模块 -- 学习笔记

    keyword 的帮助文档 >>> import keyword >>> help(keyword) Help on module keyword: NAME ke ...

  6. Protel99se教程五:protel99se的自动布线

    在上一节课的protel99se教程中,我们给大家演示的是,如何快速的将SCH原理PCB,也就是将元件转到PCB中,在这一节课,我们主要给大家讲解的是何在protel99se快速布线,我们在这节课当中 ...

  7. 隐藏nginx 版本号信息(转)

    为了安全,想将http请求响应头里的nginx版本号信息隐藏掉: 1. nginx配置文件里增加 server_tokens off; server_tokens作用域是http server loc ...

  8. 一个int 数组,里面数据无任何限制,要求求出所有这样的数a[i],其左边的数都小于等于它,右边的数都大于等于它。能否只用一个额外数组和少量其它空间实现。

    一个int数组, 比如 array[],里面数据无任何限制,要求求出 所有这样的数array[i],其左边的数都小于等于它,右边的数都大于等于它.能否只用一个额外数组和少量其它空间实现. 分析:这题很 ...

  9. MVC 优缺点

    MVC是一个架构,或者说是一个设计模式,它就是强制性使应用程序的输入,处理和输出分开.将一个应用程序分为三个部分:Model,View,Controller. 1. MVC的优点 (1) 可以为一个模 ...

  10. Hibernate Dialect must be explicitly set

    在偶然一次运行hibernate测试类的时候,出现如下错误,Exception in thread "main" org.hibernate.HibernateException: ...