swift编程语言简单开发二维码扫描

最近在学习swift编程语言(http://www.maiziedu.com/course/ios/16-161/,在看视频学习swift编程语言时,发现有个二维码扫面案例的教程,非常的不错,其中还有一些动画的实现今天就先记录一下二维码扫描的简单实现不太好记手写一遍学习的基础在于模仿嘛

创建一个实现二维码扫描的步骤

1.首先是懒加载创建会话输入设备输出设备

//先倒入框架AVFoundation

2.importAVFoundation

3.//通过懒加载创建输入设备

4.privatelazyvardeviceInput:AVCaptureDeviceInput?={

5.//获取设备摄像头

6.letdevice=AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo)

7.//使用摄像头为输入设备创建时需要try一下因为有可能拿不到摄像头所以返回值有可能为空该对象为可选(?)类型

8.do{

9.letinput=tryAVCaptureDeviceInput(device:device)

10.returninput

11.}catch{

12.print(error)

13.returnnil

14.}

15.}()

16.//创建会话/输出比较简单只需要创建一个对象

17.privatelazyvarsession:AVCaptureSession=AVCaptureSession()

18.//创建输出设备

19.privatelazyvardeviceOutput:AVCaptureMetadataOutput=AVCaptureMetadataOutput()

20.这么第一步就准备完毕扫描二维码的整体就是输出设备通过会话来拿到输入设备的获取的值再解析

2.实现扫描二维码输入输出添加到会话

//先判断是否能将输入输出设备添加到会话中

if!session.canAddInput(deviceInput){

return

}

if!session.canAddOutput(deviceOutput){

//将设备添加到会话中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.添加图层实现预览

//为了更好的操作体验一般扫描二维码的时候都会加上预览和二维码定位线先实现预览比较简单定位线学会了再更新

//还是懒加载

privatelazyvarpreviewLzyer:AVCaptureVideoPreviewLayer={

//预览涂层想要展示一个界面界面展示数据数据通过输入设备获取会话中则存储了数据

//注:闭包访问外界对象则需要带上self

letpreview=AVCaptureVideoPreviewLayer(session:self.session)

preview.frame=UIScreen.mainScreen().bounds

returnpreview

}()
再把预览添加二维码界面,但是有可能遮挡到某些空间则view.layer.insertSublayer(<#T##layer:CALayer##CALayer#>,atIndex:<#T##UInt32#>)插入一个layer视图在index第几层

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...