QRCode-二维码识别与生成

前言

有关二维码的介绍,我这里不做过多说明, 可以直接去基维百科查看,附上链接QR code.
IOS7之前,开发者进行扫码编程时,一般会借助第三方库。常用的是ZBarSDKaZXingObjC,IOS7之后,系统的AVMetadataObject类中,为我们提供了解析二维码的接口。经过测试,使用原生API扫描和处理的效率非常高,远远高于第三方库。

扫描

官方提供的接口非常简单,直接看代码,主要使用的是AVFoundation。

一些初始化的代码加上实现代理方法便完成了二维码扫描的工作,这里我们需要注意的是, 在二维码扫描的时候, 我们一般都会在屏幕中间放一个方框,用来显示二维码扫描的大小区间,这里我们在个AVCaptureMetadataOutput类中有一个rectOfInterest属性,它的作用就是设置扫描范围。

这个CGRect参数和普通的Rect范围不太一样,它的四个值的范围都是0-1,表示比例。
rectOfInterest都是按照横屏来计算的 所以当竖屏的情况下 x轴和y轴要交换一下。
宽度和高度设置的情况也是类似。

我们在上面设置有效扫描区域的方法如下

读取

读取主要用到CoreImage 不过要强调的是读取二维码的功能只有在iOS8之后才支持,我们需要在相册中调用一个二维码,将其读取,代码如下

完成相册代理, 我们在代理中添加读取二维码方法

因为没用真机,所以这里没有给出太多的截图, 用模拟器读取自带图片,结果如下

qrcode1

生成

生成二维码,其实也是用到CoreImage,但是步骤繁琐一些,代码如下

在textField输入,生成下图

qrcode3

长按二维码识别

这个功能有很多的地方在用, 最让人熟知的我想便是微信了,其实实现方法还是很简单的。

我们用刚才生成的二维码进行长按识别,效果如下

qrcode2

结语

本文demo下载地址请点这里Demo,

转自mokey1422所写的仿支付宝二维码。

系统原生的二维码扫描扫描识别速度,要比第三方好用得多,在没有特殊原因的情况下,比如7.0系统以下,我希望大家都能用系统原生的方法。

文章若有问题请给予指正,感谢。

1 3 收藏 评论

可能感兴趣的话题



直接登录
跳到底部
返回顶部