swift编程语言简单开发二维码扫描
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了swift编程语言简单开发二维码扫描相关的知识,希望对你有一定的参考价值。
最近在学习swift编程语言(http://www.maiziedu.com/course/ios/16-161/), 在看视频学习swift编程语言时,发现有个二维码扫面案例的教程,非常的不错,其中还有一些动画的实现 ,今天就先记录一下二维码扫描的简单实现 不太好记手写一遍 学习的基础在于模仿嘛
创建一个实现二维码扫描的步骤
1.首先是懒加载创建 会话 输入设备 输出设备
// 先倒入框架 AVFoundation
2. import AVFoundation
3. //通过懒加载 创建输入设备
4. private lazy var deviceInput: AVCaptureDeviceInput? = {
5. //获取设备摄像头
6. let device = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo)
7. //使用摄像头为输入设备 创建时需要try一下因为有可能拿不到 摄像头所以返回值有可能为空 该对象为可选(?)类型
8. do{
9. let input = try AVCaptureDeviceInput(device: device)
10. return input
11. }catch{
12. print(error)
13. return nil
14. }
15. }()
16. //创建 会话/输出 比较简单 只需要创建一个对象
17. private lazy var session: AVCaptureSession = AVCaptureSession()
18. //创建 输出设备
19. private lazy var deviceOutput: AVCaptureMetadataOutput = AVCaptureMetadataOutput()
20.这么第一步 就准备完毕 扫描二维码的 整体就是 输出设备通过 会话来 拿到 输入设备的获取的值 再解析
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 第几层
以上是关于swift编程语言简单开发二维码扫描的主要内容,如果未能解决你的问题,请参考以下文章