CodeHunter
它做什么
CodeHunter 是一个简单的插件项目,用于在 iOS 设备上创建任何类型的条形码扫描器。
系统需求
- iOS 9.0+
- 版本 3.x
- XCode 10.x & Swift 4.2+
旧版本在哪里?
有一段时间我没有维护它,所以当我去更新事物时,一切都出了问题。由于没有任何东西愿意与任何东西交谈,我对与工具链战斗一天不感兴趣,重新开始是最简单的方法。
由于我必须注册一个新的Pod,因此现在必须使用Code_Hunter进行安装,而不是之前的CodeHunter。
安装
CodeHunter可以通过CocoaPods获取。要安装它,只需将以下行添加到您的Podfile中
pod 'Code_Hunter'
说明
导入框架
import CodeHunter
继承CodeHunterViewController
您必须继承CodeHunterViewController类到您的ViewController中,以便支持屏幕旋转等事件。
class ViewController: CodeHunterViewController
设置扫描仪
您可以使用以下命令设置一个默认的扫描会话,它将只针对QR码
setupCaptureSession()
如果您需要其他类型的条码,请在setupCaptureSession函数内部指定它
setupCaptureSession(.typePDF417)
您还可以设置多种类型
setupCaptureSession(.typePDF417, .type128)
还有一项可选值,让扫描仪等待进一步命令开始扫描
setupCaptureSession(autoStart: false, Barcode.type128)
然后您可以手动启动扫描仪
startSession()
委托
设置委托以便它可以响应事件
self.delegate = self
如果您实现了取消按钮,您还可以使用过渡委托
self.transitionDelegate = self
配置可接受的条形码
可以限制扫描仪接受的值,例如特定字符串、数字或其他任何可以通过正则表达式表示的值。
这接受任何数量的数字
matchCode(lettersAllowed: false, numbersAllowed: true)
关于长度值的重要提示
由于iOS处理正则表达式时无法处理大值(以及它们的实际应用),为了避免因这一点而导致的失败,数值被限制为Int16。
这接受0-20个小写字母,但不允许大写字母或数字
matchCode(lettersAllowed: true, allowCapitalLetters: false, numbersAllowed: false, minLength: 0, maxLength: 20)
这使用你定义的表达式。在这个例子中,它仅接受传统网页地址
matchCodeWithExpression(regularExpression: "((https|http)://)((\\w|-)+)(([.]|[/])((\\w|-)+))+")
这个会失败,因为最大长度为0,这会触发扫描器:error:委托方法
matchCode(lettersAllowed: true, allowCapitalLetters: false, numbersAllowed: false, minLength: 0, maxLength: 0)
这个会失败,因为最大长度大于最小长度,这会触发扫描器:error:委托方法
matchCode(lettersAllowed: true, allowCapitalLetters: false, numbersAllowed: false, minLength: 10, maxLength: 0)
边框
您可以为屏幕启用可选的边框。
提供默认值为20.0宽度、黑色和0.5不透明度的扫描器窗口边框。
setupBorder()
使用提供的宽度、颜色和不透明度值提供扫描器窗口边框。
setupBorder(width: 60.0, color: .gray, opacity: 0.6)
取消按钮
您可以将可选的取消按钮放置在屏幕底部。
您可以使用以下默认命令添加取消按钮。按下它将停止扫描并解散视图控制器。
setupCancelButton()
您可以使用自定义消息、标题颜色和边框参数修改取消按钮。按下它将终止扫描并关闭视图。
let cancelBorderProperties = CancelBorderProperties(borderColor: .black, borderWidth: 1.0, cornerRadius: 5.0)
setupCancelButton(title: "Cancel", titleColor: .red, cancelBorderProperties: cancelBorderProperties)
屏幕截图
对于截图,您可以提供一个图像,该图像将放置在任何启用边框或按钮的后面。
setupScreenshot(with: image)
处理相机访问限制
CodeHunter在设置期间以及开始扫描时会检查相机访问权限。如果拒绝访问,将返回CodeHunter.notAuthorized错误。
历史变更
历史变更 | 查看每个版本引入的更改。
作者
Sean McNeil
许可
CodeHunter采用MIT许可。有关更多信息,请参阅LICENSE文件。