加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 07:06:49 所属栏目:百科 来源:网络整理
导读:最近在学习 swift 编程语言( http://www.maiziedu.com/course/ios/16-161/ ) ,在看视频学习 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第几层

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读