关于iOS扫描二维码的功能实现有两个常用的第三方库:ZBar/ZXing,iOS7以后有一个AVFoundation框架,这个框架也可以实现二维码的扫描。下面简单介绍一下这三种方法是如何实现二维码扫描的:
1. 先来介绍一下iOS7以后的用AVFoundation框架是如何此功能的:
AVFoundation是一个很大的基础库,用来创建基于时间的视听媒体,可以用它来创建,检查,编辑媒体文件也可以输入流从设备和操作视频实时捕捉和回放,详细框架可以到官网去查看About AVFoundation。下面主要介绍如何运用AVFoundation来扫描二维码;
首先获取流媒体信息我们需要用AVCaptureSession这样的一个对象来管理输入流和输出流,AVCaptureVideoPreviewsLayer对象来显示信息。基本流程:
AVCaptureSession 管理输入(AVCaptureInput)和输出(AVCaptureOutput)流,包含开启和停止会话方法。
AVCaptureDeviceInput 是AVCaptureInput的子类,可以作为输入捕获会话,用AVCaptureDevice实例初始化。
AVCaptureDevice 代表了物理捕获设备如:摄像机。用于配置等底层硬件设置相机的自动对焦模式。
AVCaptureMetadataOutput 是AVCaptureOutput的子类,处理输出捕获会话。捕获的对象传递给一个委托实现AVCaptureMetadataOutputObjectsDelegate协议。协议方法在指定的派发队列(dispatch queue)上执行。
AVCaptureVideoPreviewLayer CALayer的一个子类,显示捕获到的相机输出流
[{具体代码后期添加}]