BarcodeScanner 5.0.0

BarcodeScanner 5.0.0

测试已测试
语言语言 SwiftSwift
许可证 NOASSERTION
发布最后发布2020 年 10 月
SPM支持 SPM

Vadym MarkovKhoa PhamChristoffer WinterkvistHyper Interaktiv ASElvis Nuñez 维护。



BarcodeScanner

CI Status Version Swift Carthage Compatible License Platform

描述

BarcodeScanner 是围绕拥有条码捕获功能的相机的一个简单、美观的包装器,具有出色的用户体验。

  • 条码扫描。
  • 状态模式:扫描、处理、未经授权、未找到。
  • 处理相机授权状态。
  • 动画焦点视图和自定义加载指示器。
  • 手电筒模式切换。
  • 自定义颜色、信息和错误消息。
  • 无外部依赖。
  • 示例项目.

目录

BarcodeScanner Icon

使用

控制器

要开始捕捉,只需实例化 BarcodeScannerViewController,设置所需的代理并显示它

let viewController = BarcodeScannerViewController()
viewController.codeDelegate = self
viewController.errorDelegate = self
viewController.dismissalDelegate = self

present(viewController, animated: true, completion: nil)
BarcodeScanner scanning

您还可以将 BarcodeScannerViewController 推送到您的导航栈中

let viewController = BarcodeScannerViewController()
viewController.codeDelegate = self

navigationController?.pushViewController(viewController, animated: true)

委托者

代码委托

当您想获取捕获的代码时,请使用 BarcodeScannerCodeDelegate

extension ViewController: BarcodeScannerCodeDelegate {
  func scanner(_ controller: BarcodeScannerViewController, didCaptureCode code: String, type: String) {
    print(code)
    controller.reset()
  }
}

错误委托

当您想处理会话错误时,请使用 BarcodeScannerErrorDelegate

extension ViewController: BarcodeScannerErrorDelegate {
  func scanner(_ controller: BarcodeScannerViewController, didReceiveError error: Error) {
    print(error)
  }
}

消失委托

使用 BarcodeScannerDismissalDelegate 来处理“关闭按钮”的点击。 请注意,如果 BarcodeScannerViewController 首先被展示,则它本身不会消失。

extension ViewController: BarcodeScannerDismissalDelegate {
  func scannerDidDismiss(_ controller: BarcodeScannerViewController) {
    controller.dismiss(animated: true, completion: nil)
  }
}

操作

代码被捕获时,BarcodeScannerViewController 切换到处理模式

BarcodeScanner loading

在用户看到不错的加载动画时,您可以执行一些后台任务,例如根据代码发出网络请求以获取产品信息。当任务完成时,您可以按以下三种方式继续操作

  1. 关闭 BarcodeScannerViewController 并显示您的结果。
func scanner(_ controller: BarcodeScannerViewController, didCaptureCode code: String, type: String) {
 // Code processing
 controller.dismiss(animated: true, completion: nil)
}
  1. 显示错误消息并切换回扫描模式(例如,当在您的数据库中没有找到给定条码的产品时)
BarcodeScanner error

func scanner(_ controller: BarcodeScannerViewController, didCaptureCode code: String, type: String) {
 // Code processing
 controller.resetWithError(message: "Error message")
 // If message is not provided the default message will be used instead.
}
  1. 将控制器重置为扫描模式(带或不带动画)
func scanner(_ controller: BarcodeScannerViewController, didCaptureCode code: String, type: String) {
  // Code processing
  controller.reset(animated: true)
}

如果想要进行连续的条码扫描,只需将 BarcodeScannerViewController 实例上的 isOneTimeSearch 属性设置为 false 即可。

定制

我们根据条码扫描器进行了样式设计,使它看起来更美观,但您始终可以使用公共属性或继承来自定义其外观。

标题

let viewController = BarcodeScannerViewController()
viewController.headerViewController.titleLabel.text = "Scan barcode"
viewController.headerViewController.closeButton.tintColor = .red

请注意,只有在 BarcodeScannerViewController 正在被展示时,HeaderViewController 才会可见。

页脚和消息

let viewController = BarcodeScannerViewController()
viewController.messageViewController.regularTintColor = .black
viewController.messageViewController.errorTintColor = .red
viewController.messageViewController.textLabel.textColor = .black

相机

let viewController = BarcodeScannerViewController()
// Change focus view style
viewController.cameraViewController.barCodeFocusViewType = .animated
// Show camera position button
viewController.cameraViewController.showsCameraButton = true
// Set settings button text
let title = NSAttributedString(
  string: "Settings",
  attributes: [.font: UIFont.boldSystemFont(ofSize: 17), .foregroundColor : UIColor.white]
)
viewController.cameraViewController.settingButton.setAttributedTitle(title, for: UIControlState())

元数据

// Add extra metadata object type
let viewController = BarcodeScannerViewController()
viewController.metadata.append(AVMetadataObject.ObjectType.qr)

安装

BarcodeScanner 通过 CocoaPods 提供。要安装,只需将以下行添加到您的 Podfile 中

pod 'BarcodeScanner'

不要忘了在您的 Info.plist 文件中设置 Privacy - Camera Usage Description,否则应用会崩溃并返回 SIGBART。

为了快速尝试条形码扫描仪的演示项目,只需在终端中运行 pod try BarcodeScanner

BarcodeScanner 还可以通过 Carthage 获得。只需将以下内容写入您的 Cartfile 中即可安装:

github "hyperoslo/BarcodeScanner"

要手动安装 BarcodeScanner,请下载并将 SourcesImages 文件夹拖放到您的项目中。

作者

Hyper Interaktiv AS,[email protected]

贡献

我们很高兴您为 BarcodeScanner 贡献,有关更多信息,请参阅 CONTRIBUTING 文件。

许可证

BarcodeScanner 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。