AVScanner
示例
要运行示例项目,先克隆仓库,然后从 Example 目录中运行 pod install
需求
- iOS 10.0+
- Xcode 11.0+
- Swift 5.1+
安装
CocoaPods
AVScanner可以通过CocoaPods获取。要安装它,只需将以下行添加到你的Podfile中。
pod "AVScanner"
使用方法
AVScannerViewController
。
直接使用在你的Swift文件中引入AVScanner
和AVFoundation
。
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
}
AVScannerView
和AVScannerViewDelegate
。
使用如果你想在不使用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文件。