二维码的生成与扫描

在上看到内容就跟着做了一遍。做个记录。
首先是二维码的扫描。iOS开发-二维码扫描
这里需要用到的是AVFoundation框架相关类。由于之前做过一次小视频功能所有对相关的东西还是有一定了解。这次也算是再复习一遍。
AVCaptureSession 会话对象。此类作为硬件设备输入输出信息的桥梁,承担实时获取设备数据的责任
AVCaptureDeviceInput 设备输入类。这个类用来表示输入数据的硬件设备,配置抽象设备的port
AVCaptureMetadataOutput 输出类。这个支持二维码、条形码等图像数据的识别
在做小视频的时候用到的是AVCaptureMovieFileOutput来做输出。
AVCaptureVideoPreviewLayer 图层类。用来快速呈现摄像头获取的原始数据二维码扫描功能的实现步骤是创建好会话对象,用来获取从硬件设备输入的数据,并实时显示在界面上。在扫描到相应图像数据的时候,通AVCaptureVideoPreviewLayer类型进行返回

二维码扫描的步骤:
1、创建设备会话对象,用来设置设备数据输入
2、获取摄像头,并且将摄像头对象加入当前会话中
3、实时获取摄像头原始数据显示在屏幕上
4、扫描到二维码/条形码数据,通过协议方法回调

其实原文中写的很清楚,我就把自己认为容易忽视和很重要的店挑出来记一下吧。
AVCaptureMetadataOutput.metadataObjectTypes = @[AVMetadataObjectTypeQRCode, AVMetadataObjectTypeEAN13Code, AVMetadataObjectTypeEAN8Code, AVMetadataObjectTypeCode128Code];
原文说的的是output记得要设置类型为条形码和二维码。但是我这样设置之后还是没法识别条形码。

扫描优化
苹果提供了一种方式让我们规定扫描范围:在AVCaptureMetadataOutput中有一个叫做rectOfInterest的CGRect类型属性,这个属性用来限制扫描范围。
这个很关键。这阅读代码的时候就发现这是一个比例值。而且这个属性是以屏幕右上角为坐标原点。然后在非扫描范围加上一层半透明的黑色layer 就ok了

你可能感兴趣的:(二维码的生成与扫描)