二维码 AVCaptureMetadataOutput
2017-01-22 本文已影响225人
EnjoyWT
基本描述:
/*!
@class AVCaptureMetadataOutput
@abstract
AVCaptureMetadataOutput is a concrete subclass of AVCaptureOutput that can be used to process metadata objects
from an attached connection.
//AVCaptureMetadataOutput 是 AVCaptureOutput 的一个子类,而这个子类能够传递元数据对象(AVMetadataObject s) ,
@discussion
Instances of AVCaptureMetadataOutput emit arrays of AVMetadataObject instances (see AVMetadataObject.h), such
as detected faces. Applications can access the metadata objects with the captureOutput:didOutputMetadataObjects:fromConnection:
delegate method.
//应用通过代理方法:didOutputMetadataObjects:fromConnection: 获得数据
*/
方法介绍:
唯一的方法:
- (void)setMetadataObjectsDelegate:(id<AVCaptureMetadataOutputObjectsDelegate>)objectsDelegate queue:(dispatch_queue_t)objectsCallbackQueue;
//设置代理,这个队列是数据返回时执行的队列,也就是代理方法执行的队列,队列不能为空
代理需要执行方法:
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection;
//注意这个方法执行是所在的队列是开始在setMetadataObjectsDelegate:queue: 中设定的队列.
属性:
@property(nonatomic, readonly) id<AVCaptureMetadataOutputObjectsDelegate> metadataObjectsDelegate;
//代理对象
@property(nonatomic, readonly) dispatch_queue_t metadataObjectsCallbackQueue;
//代理方法回调是, 所在的队列
@property(nonatomic, readonly) NSArray *availableMetadataObjectTypes;
// 根据输入产生的元数据的类型
@property(nonatomic, copy) NSArray *metadataObjectTypes;
//自己设定的元数据的类型,这里需要注意的一点是,如果metadataObjectTypes里面的任何一个元素在availableMetadataObjectTypes 里面没有,那么系统会抛出一个NSInvalidArgumentException.
//这里理解不太透,以后修改
@property(nonatomic) CGRect rectOfInterest ;
//直接翻译是感兴趣的区域, 也就是说系统解码时分析数据的区域.默认是(0,0,1,1).即对整个相机显示的内容区域进行解析
// 设置rectOfInterest会使识别效率提高,(因为数据的冗余度变低,解码是计算的数据量变小)