对系统扫描功能的封装 - BMScan

2017-04-28      110      Objective-C
项目简介

BMScan

对系统扫描功能的封装,集成了扫描相关 UI 和自定义识别区域等功能,最简单的使用需要继承于BMScanController或者BMScanDefaultCotroller即可。

效果图

其中半透明区域颜色,扫描区域尺寸和位置,扫描区域4脚的颜色,扫描线条的颜色和样式均可以自定义。

CocoaPods

CocoaPods is the recommended way to add BMScan to your project. Add a pod entry for BMScan to your Podfile.

pod 'BMScan', '~> 0.1.0'

Second, install BMScan into your project:

pod install

使用说明

只需要扫描功能

  • 创建扫描控制器继承于BMScanController
  • 配置BMScanDelegate代理
  • 当扫描到内容时回会触发下面的代理方法
- (void)scanController:(BMScanController *)scanController captureWithValueString:(NSString *)valueString;
  • 如果想在开始扫描和结束扫描时做额外的操作可以重写下面的方法,需要先调用super,已用NS_REQUIRES_SUPER修饰
/**
 开始扫描
 */
- (void)startScanning NS_REQUIRES_SUPER;

/**
 结束扫描
 */
- (void)closureScanning NS_REQUIRES_SUPER;

自定义扫描 UI

  • 如果需要自定义扫描UI,扫描动画可以继承于BMScanDefaultCotroller可轻松实现常见功能,也可以完全继于BMScanDelegate自行实现
  • 创建扫描控制器继承于BMScanDefaultCotroller
  • 配置BMScanDelegate和BMScanDefaultDataSource代理
  • 参考代理中的方法实现相关功能即可

自定义透明扫描区域

/**
 扫描区域 X 值

 @param scanController 扫描控制器
 @return X 值
 */
- (CGFloat)areaXInscanController:(BMScanController *)scanController;

/**
 扫描区域 Y 值
 
 @param scanController 扫描控制器
 @return Y 值
 */
- (CGFloat)areaYInscanController:(BMScanController *)scanController;

/**
 扫描区域 Width 值
 
 @param scanController 扫描控制器
 @return Width 值
 */
- (CGFloat)areaWidthInscanController:(BMScanController *)scanController;

/**
 扫描区域 Height 值
 
 @param scanController 扫描控制器
 @return Height 值
 */
 - (CGFloat)areaXHeightInscanController:(BMScanController *)scanController;

标题距扫描区域的距离

/**
 标题距扫描区域的距离

 @param scanController 扫描控制器
 @return 距离
 */
- (CGFloat)areaTitleDistanceHeightInscanController:(BMScanController *)scanController;

非扫描区域的颜色(半透明区域)

/**
 标题距扫描区域的距离

 @param scanController 扫描控制器
 @return 距离
 */
- (CGFloat)areaTitleDistanceHeightInscanController:(BMScanController *)scanController;

4个拐脚的颜色

/**
 脚颜色

 @param scanController 扫描控制器
 @return 颜色值
 */
- (UIColor *)feetColorInscanController:(BMScanController *)scanController;

4个拐脚的颜色分别自定义

/**
 左上脚颜色
 
 @param scanController 扫描控制器
 @return 颜色值
 */
- (UIColor *)leftTopColorInscanController:(BMScanController *)scanController;

/**
 左下脚颜色
 
 @param scanController 扫描控制器
 @return 颜色值
 */
- (UIColor *)leftBottonColorInscanController:(BMScanController *)scanController;

/**
 右上脚颜色
 
 @param scanController 扫描控制器
 @return 颜色值
 */
- (UIColor *)rightTopInscanController:(BMScanController *)scanController;

/**
 右下脚颜色
 
 @param scanController 扫描控制器
 @return 颜色值
 */
- (UIColor *)rightBottonInscanController:(BMScanController *)scanController;

扫描线颜色

/**
 扫描线条颜色

 @param scanController 扫描控制器
 @return 颜色值
 */
- (UIColor *)scanfLinInscanController:(BMScanController *)scanController;

扫描条动画

待补充更多样式和自定义样式

/**
 扫描线条动画

 @param scanController 扫描控制器
 @return 动画值
 */
- (BMScanLinViewAnimation)scanLinViewAnimationInscanController:(BMScanController *)scanController;

扫描线条类型

/**
 扫描线条类型

 @param scanController 扫描控制器
 @return 扫描线条类型
 */
- (BMScanLin)scanLinInscanController:(BMScanController *)scanController;

可识别区域

可以继于BMScanDefaultCotroller不需要考虑,内部会有扫描区域来确定可识别区域,如果有特殊要求可实现BMScanDataSource协议的如下方法即可

/**
 设置可以识别区域

 @param scanController 扫描控制器
 @return 可识别区域
 */
- (CGRect)rectOfInterestInScanController:(BMScanController *)scanController;