Fork me on GitHub

BMScan 博客讲解

BMScan

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

Github地址

效果图




使用说明

只需要扫描功能

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

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

自定义扫描 UI

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    /**
    扫描区域 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;

标题距扫描区域的距离

1
2
3
4
5
6
7
/**
标题距扫描区域的距离

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

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

1
2
3
4
5
6
7
/**
标题距扫描区域的距离

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

4个拐脚的颜色

1
2
3
4
5
6
7
/**
脚颜色

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/**
左上脚颜色

@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;

扫描线颜色

1
2
3
4
5
6
7
/**
扫描线条颜色

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

扫描条动画

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

1
2
3
4
5
6
7
/**
扫描线条动画

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

扫描线条类型

1
2
3
4
5
6
7
/**
扫描线条类型

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

可识别区域

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

1
2
3
4
5
6
7
/**
设置可以识别区域

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

方法预览

- END -
关注微信公众号,发现更多精彩

文章作者:梁大红

特别声明:若无特殊声明均为原创,转载请注明,侵权请联系

版权声明:署名-非商业性使用-禁止演绎 4.0 国际