AVScanner 1.0.1

AVScanner 1.0.1

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

mrfour 维护。



AVScanner 1.0.1

  • mrfour

AVScanner

CI Status Version License Platform

示例

AVScanner Example

要运行示例项目,先克隆仓库,然后从 Example 目录中运行 pod install

需求

  • iOS 10.0+
  • Xcode 11.0+
  • Swift 5.1+

安装

CocoaPods

AVScanner可以通过CocoaPods获取。要安装它,只需将以下行添加到你的Podfile中。

pod "AVScanner"

使用方法

直接使用AVScannerViewController

在你的Swift文件中引入AVScannerAVFoundation

import AVScanner
import AVFoundation

继承AVScannerViewController,它包含一个scannerView并遵从AVScannerViewDelegate。然后重写scannerView(_:didCapture:),这就完成了!

class ScannerViewController: AVScannerViewController {
    // ...
    
    override func scannerView(_ scannerView: AVScannerView, didCapture metadataObject: AVMetadataMachineReadableCodeObject) {
        // handle the captured metadataObject here
    }
}

你还需要处理初始化或启动捕获会话时可能发生的错误。

override func scannerView(_ scannerView: AVScannerView, didFailConfigurationWithError error: Error) {
    guard let scannerError = error as? AVScannerError else { return }
    switch scannerError {
    case .videoNotAuthorized:
        print("The user didn't authorize to access the camera yet.")
    case .configurationFailed:
        print("This device somehow can't capture videos.")
    }
}

func scannerView(_ scannerView: AVScannerView, didFailStartingSessionWithError error: Error) {
    // ...handle the error here
}

使用AVScannerViewAVScannerViewDelegate

如果你想在不使用AVScannerViewController的情况下自定义视图控制器,你可以将一个AVScannerView实例添加到你自己定制的视图控制器中。

class MyScannerViewController: UIViewController {
    let scannerView = AVScannerView() // you can also use an @IBOutlet here.
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // setup your scanner view here or layout it with auto-layout in the storyboard.
    }
}

然后你可以决定何时初始化捕获会话,例如,你可能想展示另一个视图来描述你的页面并提供一个按钮让用户决定是否授权相机访问。要初始化捕获会话,只需调用

scannerView.initSession()

初始化捕获会话时可能会出现错误,请记住分配一个AVScannerViewDelegate对象来处理该错误。会话初始化完成后,你可以通过调用

scannerView.startSession()

务必在调用startSession()之前无错误地调用initSession()

修改支持的条码类型

// The default value of supportedMetadataObjectTypes only includes `.qr`.
scannerView.supportedMetadataObjectTypes = [.qr, .pdf417]

更多详情请参考示例项目,欢迎联系我。

许可证

AVScanner按照MIT许可证提供。更多信息请参见LICENSE文件。