美文网首页《OC专栏》
简单功能扫一扫-思想剖析 by:西瓜

简单功能扫一扫-思想剖析 by:西瓜

作者: 不够果断是种癌 | 来源:发表于2018-06-08 09:45 被阅读44次

    分享给大家一个秘诀:

    要开始写功能,首先得查这方面的资料,然后得在脑海里模拟这个功能的实现过程,而不是没有思路拿起键盘就敲的,敲的改来改去,思路不通又全删了,再慢慢敲。这样的效率是特别慢的。

    好了废话不多说了,下面我们开始剖析一下扫一扫功能的实现:

    第一步,首先我们得确定就是用户的相机的权限获取。只有在获取了用户的相机的权限才能进行扫一扫。因为扫一扫是拿相机的扫的。

    第一步又可以分为2个部分。

    01.如果是第一次使用扫一扫功能,这里会出现一个弹框提示用户,提示用户我们这边需要获取您的相机权限。如果允许,这里开启才能进行扫一扫,如果拒绝是扫不了的。

    02.如果是第二次,我们这边就需要检测一下我们是否有app权限,如果有我们这边不做任何操作,直接进行扫一扫,如果没有我们需要提示用户去设置里面开启权限。

    第二步:也就是开启一些初始化的设置了。

    1.系统框架的导入,扫一扫依赖的系统库是AVFoundation。

    2.获取当前摄像设备,如果获取不到。这里我们需要提示用户您的设置没有摄像头。然后扫一扫功能就此停止。

    3.初始化设备的输入流和输出流。并对输出流支持的格式做判断。我们这边主要兼容条形码和二维码就好了。并且让输出流是在主线程里面进行刷新,如果是异步的话,链接是会出问题的。

    4.初始化采集流(采集流的作用在于捕捉输入流和输出流)。并设置高的分辨率。

    5.这里做一个判断,当采集流能添加输入流的时候,添加输入流。让采集流能够添加输出流的时候输出,添加输出流。截止到目前,采集流和输入流以及输出流已经衔接上了。

    6.初始化采集流进行扫描窗口的位置。也就是扫描的范围。

    7.针对窗口位置进行绘制框。(可自定义样式)。

    8.针对窗口的上下,画条线,针对线写一个由上二下的动画。(可自定义动画)。针对动画来回走动,我这边里采用的是定时器。

    9.在扫描窗口位置下面进行自定义(可是手电筒功能,提示用户的消息等等)。

    第三步:开始扫描。

    让采集流开始扫描采集。

    第四步:扫描出结果。

    01.扫秒出了结果,我们需要停止扫描动画。也就是定时器的扫描。

    02.此时为想拿结果做的事定义为一个方法。

    03.这里提示一下用户,扫描已完成,然后给用户2个选择,重新扫描,二确定。

    04.当用户点击重新扫描。

    采集流的扫描开启,定时器的开启,也就是线的动画的上动画开启。

    有结果了又会走向第四步又从01开始。

    05.用户点击确定。

    1.移除采集流窗口。

    2.销毁定时器。

    3.调用想做的事情的那个方法。

    至此扫一扫功能的整体模式就出来了。想要源码的可以私下找我拿。

    相关文章

      网友评论

        本文标题:简单功能扫一扫-思想剖析 by:西瓜

        本文链接:https://www.haomeiwen.com/subject/swyosftx.html