Swift 二维码扫描 简单实现
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Swift 二维码扫描 简单实现,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1824字,纯文字阅读大概需要3分钟。
内容图文
3.30看视频 学到了二维码简单的实现 还有一些动画的实现 今天就先记录一下二维码扫描的简单实现 不太好记手写一遍 学习的基础在于模仿嘛
创建一个实现二维码扫描的步骤
1.首先是懒加载创建 会话 输入设备 输出设备
// 先倒入框架 AVFoundation import AVFoundation // 通过懒加载 创建输入设备 private lazy var deviceInput: AVCaptureDeviceInput? = { //获取设备摄像头 let device = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo) //使用摄像头为输入设备 创建时需要try一下因为有可能拿不到 摄像头所以返回值有可能为空 该对象为可选(?)类型do{ let input = try AVCaptureDeviceInput(device: device) return input }catch{ print(error) return nil } }() //创建 会话/输出 比较简单 只需要创建一个对象private lazy var session: AVCaptureSession = AVCaptureSession() //创建 输出设备private lazy var deviceOutput: AVCaptureMetadataOutput = AVCaptureMetadataOutput()
这么第一步 就准备完毕 扫描二维码的 整体就是 输出设备通过 会话来 拿到 输入设备的获取的值 再解析
2.实现扫描二维码 输入输出 添加到会话
// 先判断是否能将 输入输出设备 添加到会话中 if !session.canAddInput(deviceInput) { return } if !session.canAddOutput(deviceOutput){ return } //将设备添加到 会话中 session.addInput(deviceInput) session.addOutput(deviceOutput)
3.设置允许扫描类型
// 设置扫描类型 也就是设置输出设备能够解析的数据类型 // 设置类型时 必须先把设备添加到会话 否则崩溃 deviceOutput.metadataObjectTypes = deviceOutput.availableMetadataObjectTypes
deviceOutput.availableMetadataObjectTypes 获取到所有的解析类型
4.实现代理 拿到扫描数据
// 设置代理 解析数据 queue线程 deviceOutput.setMetadataObjectsDelegate(self, queue: dispatch_get_main_queue())
5.开始会话
// 开始 执行会话 session.startRunning()
6.添加图层 实现预览
// 为了更好的操作体验 一般扫描二维码的时候都会加上 预览 和 二维码定位线 先实现预览比较简单 定位线学会了再更新 // 还是懒加载 private lazy var previewLzyer: AVCaptureVideoPreviewLayer = { //预览涂层 想要展示一个界面 界面展示数据 数据通过输入设备获取 会话中则存储了数据 //注: 闭包 访问外界对象 则需要带上self let preview = AVCaptureVideoPreviewLayer(session: self.session) preview.frame = UIScreen.mainScreen().bounds return preview }()
再把预览添加到 二维码界面,但是有可能遮挡到某些空间 则
view.layer.insertSublayer(<#T##layer: CALayer##CALayer#>, atIndex: <#T##UInt32#>)
插入一个layer视图 在index 第几层
原文:http://www.cnblogs.com/GGBigBong/p/5340134.html
内容总结
以上是互联网集市为您收集整理的Swift 二维码扫描 简单实现全部内容,希望文章能够帮你解决Swift 二维码扫描 简单实现所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。