苹果公司升级到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. c/c++ double的数字 转成字符串后 可以有效的避免精度要求不高的数

    char n[100]; sprintf(n,"%lf",db);

  2. Windows上右键git菜单出来的原因

    Windows上右键git菜单出来的原因 Git下载地址https://code.google.com/p/msysgit/downloads/list?q=full+installer+offici ...

  3. Product(大数相乘)

    Description The problem is to multiply two integers X, Y. (0<=X,Y<10250) Input The input will ...

  4. JAVA语言规范和API网址

    Java语言规范: http://docs.oracle.com/javase/specs/ Java API: http://docs.oracle.com/javase/8/docs/api/in ...

  5. 3.PHP 教程_PHP 语法

     基础的PHP语法 PHP脚本可以放在文档中的任何位置. PHP脚本以<?php开始,以?>结束: <?php //PHP代码 ?> PHP文件的默认文件扩展名是". ...

  6. AngularJS Factory Service Provider

    先看看http://www.cnblogs.com/mbydzyr/p/3460501.html http://www.oschina.net/translate/angularjs-factory- ...

  7. AMD模块化JS

    参考http://ourjs.com/detail/52ad26ff127c76320300001f Offcial Site http://requirejs.org/ 下载http://requi ...

  8. 数组length属性的一些特性

    ~~·数组的length属性是可读写的 var colors = ["blue","red","green"];colors.length ...

  9. ThinkPHP 3.1.2 视图-2

    一.模板的使用 (重点) a.规则 模板文件夹下[TPL]/[分组文件夹/][模板主题文件夹/]和模块名同名的文件夹[Index]/和方法名同名的文件[index].html(.tpl) 更换模板文件 ...

  10. 【水一发next_permutation】poj 1146——ID Codesm

    来源:点击打开链接 求字典序下一位,没有直接输出没有.全排列函数秒水过. #include <iostream> #include <algorithm> #include & ...