Swift5.0,基于系统API封装的扫描二维码、条形码、等多种条码扫描组件 ScanHelper
注意事项:
⚠️⚠️⚠️ 真机环境运行 ⚠️⚠️⚠️
📣📣📣 platform: ≥ iOS 11
📣📣📣 language: Swift
、Objective-C
一)UI样式
二)组件特性
💕 UI界面可完全自定义;
🎉 使用简单,犹如芊芊少女般丝滑、流畅;
🍀 严格遵守Swift
代码规范,Demo
工程0
警告;
💥 无内存泄漏问题,合理释放对象,及时回收内存资源;
🏄 静态库ScanHelperSDK.framework
,身轻如燕,仅1.1
M大小;
🏆 轻量级,只开启基础使用功能,仅占用12 ~ 16
个内存, 启用全部功能, 内存占用在120 ~ 130
之间;
三)功能列表
key | type | des | true | false |
---|
isSingle | bool | 是否仅识别单一结果,默认true | 单一结果 | 多个结果 |
isSquare | bool | 是否展示正方形边框,默认true | 展示 | 不展示 |
isSingleFocu | bool | 是否开启单点聚焦,默认false | 开启 | 关闭 |
isAutoFocus | bool | 是否开启自动对焦,默认true | 开启 | 关闭 |
isDoubleTap | bool | 是否支持双击手势,默认true | 支持 | 不支持 |
isZoom | bool | 是否支持缩放手势,默认true | 支持 | 不支持 |
isHasTorch | bool | 是否支持光感检测,自动打开闪光灯,默认true | 支持 | 不支持 |
isLimit | bool | 是否自定义底部UI,默认false | 自定义 | 默认UI |
isUnrestrained | bool | 是否完全自定义UI,默认false | 自定义 | 默认UI |
isDebugDes | bool | 是否打印调试信息,默认true | 打印 | 不打印 |
soundSource | (String, String)? | 扫描提示音,默认nil | 有效资源展示 | 默认不展示 |
animationImage | UIImage? | 扫描动画样式图,默认nil | 有效资源展示 | 默认不显示 |
brightnessMinValue | Double | 自动开启闪光灯亮度对比值,默认true | 小于此值开启 | 默认-1 |
brightnessMaxValue | Double | 自动关闭闪光灯亮度对比值,默认true | 大于此值关闭 | 默认6 |
preset | AVCaptureSession.Preset | 扫描质量 | inputPriority | 默认 |
四)样式列表
key | type | des |
---|
margin | Int | 距离左右边界间距(默认60) |
lineHeight | Int | 正方形边框粗细(默认0) |
lineColor | UIColor | 正方形边框颜色(默认clear) |
angleColor | UIColor | 正方形边框4个角颜色(默认orange) |
angleLength | Int | 正方形边框4个角长度(默认30) |
angleHeight | Int | 正方形边框4个角高度(默认4) |
angleStyle | AngleStyle | 正方形边框边角样式(默认重合) |
animationStyle | AnimationStyle | 扫码动画效果(默认无动画) |
autoFocuStyle | AutoFocuStyle | 自动聚焦样式(已设默认样式) |
animationImage | UIImage | 扫码动画资源图片(可选值,若为空则无动画效果) |
unrecognizedArea | UIColor | 非识别区域背景色(默认黑色,0.5透明度) |
五)集成方式
1)CocoaPods
pod 'ScanHelper'
2)手动导入
ScanHelperSDK
1. 下载静态资源包,拷贝
导入到工程目录;
2. 选中 TARGETS
-> Build Settings
-> Framework Search Paths
;
3. 配置添加进来的静态库路径;
4. 配置证书,真机模式扫码调试;
六)导入头文件
1)Swift
项目
import ScanHelperSDK
2)Objective-C
项目
#import <ScanHelperSDK/ScanHelperSDK-Swift.h>
七)使用方法
1)基础使用(单一识别结果,默认使用方式)
let scanHelper = ScanHelper()
override func viewDidLoad() {
super.viewDidLoad()
scanHelper.start(supView: view) { [weak self] (res) in
guard let self = self else { return }
print(res)
self.navigationController?.popViewController(animated: true)
}
}
2)进阶使用(动画效果,使用属性,调整扫描框样式)
let scanHelper = ScanHelper()
override func viewDidLoad() {
super.viewDidLoad()
var config = ScanConfig()
config.sound = Bundle.main.path(forResource: "scan_audio", ofType: "wav")
config.animationImage = UIImage(named: "scan_animation")
config.isAutoFocus = false
config.isHasTorch = false
config.isZoom = false
config.isSingle = false
config.scanStyle.lineColor = .purple
config.scanStyle.angleStyle = .OutLine
config.scanStyle.anmiationStyle = .LineCenter
config.scanStyle.autoFocuStyle.lineColor = .blue
scanHelper.start(supView: view, scanConfig: config) { [weak self] (res) in
guard let self = self else { return }
print(res)
self.navigationController?.popViewController(animated: true)
}
}
3)高阶使用(自定义UI、获取多个扫描结果)
class ScanHelperViewController: UIViewController, ScanHelperUIDelegate {
let scanHelper = ScanHelper()
override func viewDidLoad() {
super.viewDidLoad()
defaultBackgroundColor()
let config = ScanConfig()
config.isUnrestrained = true
scanHelper.delegate = self
scanHelper.start(supView: view, scanConfig: config)
}
func scanLimit(_ bottomView: UIView) {
bottomView.backgroundColor = .orange
}
func scanUnrestrained(_ fullView: UIView) {
let v = UIView()
v.frame = CGRect(x: 0, y: 0, width: 200, height: 200)
fullView.addSubview(v)
}
func scanCaptureOutput(_ brightnessValue: Double) {
print(brightnessValue)
}
func scanMetadataOutput(_ values: Array<ScanResult>) {
print(values)
}
deinit {
print("ScanHelperViewController deinit")
}
}
八)API引导
1)核心方法
@objc @available(iOS 11.0, *)
func start(supView: UIView, scanConfig: ScanConfig, scanRegion: CGRect, scanType: [AVMetadataObject.ObjectType], scanHandler: ((ScanResult) -> Void)?)
@available(iOS 11.0, *)
@objc func stop()