第一步:加入框架 AVFoundation.framework

目录选择 targets -> Build Phases -> Link Binary with Libraries 后,加入AVFoundation.framework即可

第二步:加入以下代码,并加入协议 AVCaptureMetadataOutputObjectsDelegate,

定义全局变量

var session: AVCaptureSession?;
var previewLayer: AVCaptureVideoPreviewLayer?;  

在需要使用的地方 使用readQRCode()函数即可

func readQRCode() {//1.获取摄像头设备var device:AVCaptureDevice = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo);//2.设置输入var error: NSError?;var input: AVCaptureDeviceInput = AVCaptureDeviceInput.deviceInputWithDevice(device, error: &error) as AVCaptureDeviceInput;if (error != nil) {println("没有摄像头\(error?.localizedDescription)");return;}// 3. 设置输出(Metadata元数据)var output: AVCaptureMetadataOutput = AVCaptureMetadataOutput();// 3.1 设置输出的代理// 说明:使用主线程队列,相应比较同步,使用其他队列,相应不同步,容易让用户产生不好的体验
        output.setMetadataObjectsDelegate(self, queue: dispatch_get_main_queue());// 4. 拍摄会话var session1: AVCaptureSession = AVCaptureSession();session1.addInput(input);session1.addOutput(output);// 4.1 设置输出的格式// 提示:一定要先设置会话的输出为output之后,再指定输出的元数据类型!output.metadataObjectTypes = [AVMetadataObjectTypeQRCode];// 5. 设置预览图层(用来让用户能够看到扫描情况)var preview: AVCaptureVideoPreviewLayer = AVCaptureVideoPreviewLayer.layerWithSession(session1) as AVCaptureVideoPreviewLayer;// 5.1 设置preview图层的属性preview.videoGravity = AVLayerVideoGravityResizeAspectFill;// 5.2 设置preview图层的大小preview.frame = self.view.bounds;// 5.3 将图层添加到视图的图层self.view.layer.insertSublayer(preview, atIndex: 0);self.previewLayer = preview;// 6. 启动会话
        session1.startRunning();self.session = session1;}func captureOutput(captureOutput: AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [AnyObject]!, fromConnection connection: AVCaptureConnection!) {// 会频繁的扫描,调用代理方法// 1. 如果扫描完成,停止会话self.session?.stopRunning();// 2. 删除预览图层self.previewLayer?.removeFromSuperlayer();println(metadataObjects);// 3. 设置界面显示扫描结果if (metadataObjects.count > 0) {var obj:AVMetadataMachineReadableCodeObject = metadataObjects[0] as AVMetadataMachineReadableCodeObject;// 提示:如果需要对url或者名片等信息进行扫描,可以在此进行扩展!println("结果如下:" + obj.stringValue);}}

转载于:https://www.cnblogs.com/ziyeSky/p/4138053.html

IOS 控件 - Swift 集成 IOS 自带 API 扫描二维码相关推荐

  1. iOS 生成带 logo 的二维码,区域截屏保存至相册(小功能二连发 (一))

    原文链接:http://www.jianshu.com/p/36e9f012ef39 生成带 logo 的二维码 区域截屏相关 -- 由3033分享 开篇 最近项目需要搞了几个相对独立的小功能,今天有 ...

  2. iOS 开发 二维码生成大全(黑白/彩色二维码和带图片的二维码)详解

    前言 扫描二维码使用的是coreImage框架,属于UIKit框架中的体系,多以使用时不用导入coreImage框架 开始之前,让我们谈谈Core Image框架中最重要的几个类: CIContext ...

  3. iOS 扫描二维码/条形码

    级别:★★☆☆☆ 标签:「iOS 原生扫描」「AVCaptureSession」「AVCaptureDevice」「rectOfInterest」 作者: Xs·H 审校: QiShare团队 最近做 ...

  4. IOS抖音短视频APP开发关于扫描二维码,并根据文本生成二维码

    IOS抖音短视频APP开发关于扫描二维码,(根据光线强弱显示隐藏闪光灯)并根据文本生成二维码. WeakSelf; //IOS抖音短视频APP开发构建扫描样式视图 _scanView = [[WSLS ...

  5. IOS实现扫描二维码,利用系统API实现,看了这篇IOS扫描功能再也不用求人了。

    如今在国内无论走到哪里,只要是涉及支付的方面都可以使用支付宝或微信扫个二维码进行付款.现在二维码随处可见,二维码支付,二维码点餐,二维码坐公交,二维码做地铁,广告宣传页上, 电视台节目上等等.另外连乞 ...

  6. 微信扫描二维码和浏览器扫描二维码 ios和Android 分别进入不用的提示页面

    实现微信扫描二维码和浏览器扫描二维码 ios和Android 分别进入不用的提示页面 而进入商城下载该项目 详情地址:gitee.com/DuJiaHui123- 1.创建完之后 替换文件里面的ios ...

  7. 【转】借助第三方支持https协议的存储实现自己网站上扫描二维码安装IOS APP

    使用plist安装,一般是企业级开发者账号不需要登录到APP STORE的IOS设备应用发布时所用到的技巧. 准备: *一台运行着OSX的苹果电脑,最新版的XCODE,用于导出ipa和plist 一个 ...

  8. 扫描二维码下载app,判断是Android还是ios,并跳转到不同的下载地址

    写在前面 通常,我们开发一个app,有Android版本,有ios版本,但是,我们有时候只有一个二维码可以放置,比如,通过社会化分享,分享到微信一张图片,通过微信识别二维码来下载我们的app,此时,只 ...

  9. iOS中 扫描二维码/生成二维码详解

    最近大家总是问我有没有关于二维码的demo,为了满足大家的需求,特此研究了一番,希望能帮到大家! 指示根视图: ? 1 self.window.rootViewController = [[UINav ...

最新文章

  1. rabbitmq Centos6.8安装及基础命令
  2. DOM下的节点属性和操作小结
  3. 拓扑排序(Topological Sorting)
  4. sql的子查询超级慢-子查询酿的祸
  5. Backtrader交易基础2
  6. perl mysql dml_MySQL Connector执行SQL语句的三种方式
  7. 【随笔】4.上海上港
  8. 围观电动车极端测试,是一种怎样的体验?
  9. git commit 规范校验配置和版本发布配置
  10. 给ecshop后台增加管理功能页面
  11. nodePPT初认识启动与手机控制
  12. python判断字符类型例题_Python面试题:字符类型的考察
  13. C++ string类成员函数
  14. MATLAB 绘制柱状图
  15. 一个从培训机构出来的程序员
  16. python中对文件的操作总结
  17. 给函数取一个“好”的名字
  18. 只能上QQ,不能打开网页的解决办法
  19. 微信支付之微信公众号网页支付(各种总结)
  20. 企业经营数据的质量及其八个指标

热门文章

  1. addView的误区
  2. vacantcell缓存分析
  3. Linux配置汇总上(北大青鸟Linux课程学习总结)
  4. ActivityManager: Warning: Activity not started, its current task has been brought to the front
  5. 从fragment开始向上查找实现了某个接口的parent Fragment 或者 Activity
  6. Android自定义属性,format详解
  7. Android调用手机浏览器打开某网页出现异常情况
  8. Mysql主从复制详解和实战
  9. 接口自动化测试系列(二):深入分析HTTP状态码502
  10. Echart---多项柱状图-2D/H5