基于原生Vision库实现的二维码/条码扫码封装
open class ScanView : UIView {
/// 识别范围,预览视图参考坐标系
public var cropRect: CGRect
/// 是否自动选中,如果扫描结果只有一个的时候该属性生效
public var autoSelect: Bool
/// 扫描结束的回调,在这一步可以隐藏闪光灯、选择相册、扫描动画等操作了
public var scanCompletion: ((_ list: [VNBarcodeObservation], _ image: UIImage?) -> Void)?
/// 多码标记按钮配置
public var configTagUIButton: ((_ btn: UIButton) -> Void)?
/// 配置对焦的视图,默认是半径16的红色圆点
public var configFocusView: ((_ focusView: UIImageView) -> Void)?
/// 对焦动画,通过修改视图的透明度来实现视图的显示和隐藏
public var focusAnimation: ((_ focusView: UIImageView) -> Void)?
public var brightnessBlock: ((_ brightness: CGFloat) -> Void)? { get set }
/// 指定初始化函数
/// - Parameters:
/// - metadataTypes: 扫码识别的类型
/// - cropRect: 扫码的范围,参考坐标系为当前控件
/// - autoSelect: 是否自动选中,多码识别的时候有效
/// - success: 选中二维码/条码的回调
public convenience init(_ barcodeTypes: [BarcodeType] = [.qr, .code128], cropRect: CGRect = .zero, autoSelect: Bool = true, success: @escaping (_ result: String?) -> Void)
/// 准备开始,会检查基本设置,在此之前必须要确定视图的bounds
open func prepareStart() throws -> Bool
/// 闪光灯开关
open func setFlashlight(open: Bool) throws -> Bool?
/// 扫码相册选中的图片
///
/// 扫码结果不在扫码区域范围内的结果会忽略
///
/// - Parameter image: 要扫描的图片
public func scan(_ image: UIImage)
/// 绘制二维码/条码所在的位置
///
/// - Parameters:
/// - list: 二维码/条码信息
/// - image: 资源图片
/// - mode: 结果预览模式
open func draw(_ list: [VNBarcodeObservation], image: UIImage, mode: UIView.ContentMode = .scaleAspectFill)
/// 获取二维码/条码标记的按钮
///
/// 默认会有一个layer的缩放动画,如果不需要可以移除,key: animation
///
/// - Parameter feature: 二维码/条码信息
open func getTagButton(_ barcode: VNBarcodeObservation) -> UIButton
}
public class ScanTool {
public static func scan(_ image: UIImage, symbologies: [BarcodeType] = [.code128, .qr], completion: @escaping (_ result: [VNBarcodeObservation]?) -> Void)
}