在 iOS7 以前,在iOS中实现二维码和条形码扫描,我们所知的有,两大开源组件ZBar与ZXing. 个人感觉这两大组件用起来约束很多, 自定义的部分实在太局限了. 而且ZBar在使用的时候, 存在.o文件会和百度地图SDK以及支付宝SDK产生冲突. 之前在整理公司源代码的时候, 就对系统自带的扫码api进行了总结. 源码下载
主要类介绍:
1 // FrostedView.h 2 #import <UIKit/UIKit.h> 3 @interface FrostedView : UIView 4 - (instancetype)initWithTranslucentRect:(CGRect)translucentRect; 5 @end
这是我封装的一个View,初始化时传入一个矩形即可,此矩形即代表中间的扫描卡,四周是半透明的黑色.
// MHScanViewController.h #import <UIKit/UIKit.h> @interface MHScanViewController : UIViewController @property (strong, nonatomic) void(^rebackData)(NSString *); @end
这是用于扫描的类, 只有一个获取扫描结果的Block属性,定义之后直接从此Block中得到和处理扫描结果,如下:
MHScanViewController *scanVC = [[MHScanViewController alloc] init]; scanVC.rebackData = ^(NSString *retStr) { NSLog(@"回传过来的的扫面结果%@", retStr); }; [self presentViewController:scanVC animated:YES completion:nil];