QRScanner
一个简单的 iOS 二维码扫描框架。提供类似 ios13+ 的扫描效果。用 Swift 编写。
iOS 13.0+ | 在 iOS 10.0+ 中使用 QRScanner |
---|---|
![]() |
![]() |
“QR Code”是 DENSO WAVE INCORPORATED 的注册商标
特性
- 类似于 iOS 13.0+ 的设计
- 简单使用 示例
- 支持 iOS 10.0+
开发需求
- iOS 10.0+
- Swift: 5.4.2
- Xcode 版本: 13.0
安装
CocoaPods 是安装 QRScanner 的推荐方法。
Pod方法
- 只需将以下行添加到您的
Podfile
platform :ios, '10.0'
pod 'MercariQRScanner'
- 运行命令
pod install
- 在您的源文件中写下导入语句
import MercariQRScanner
Carthage方法
- 移动您的项目目录并创建Cartfile
> touch Cartfile
- 将以下行添加到Cartfile
github "mercari/QRScanner"
- 创建框架
> carthage update --platform iOS
- 在Xcode中,转到“通用 > 编译阶段 > 链接框架和库”
- 将框架添加到项目中
- 添加一个新的运行脚本并输入以下代码
/usr/local/bin/carthage copy-frameworks
- 在输入文件上点击"+"并添加框架路径
$(SRCROOT)/Carthage/Build/iOS/QRScanner.framework
- 在您的源文件中写下导入语句
import QRScanner
使用说明
Privacy - Camera Usage Description
添加到Info.plist文件
将
使用基础
import QRScanner
// If use the Pod way, please import MercariQRScanner
final class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let qrScannerView = QRScannerView(frame: view.bounds)
view.addSubview(qrScannerView)
qrScannerView.configure(delegate: self)
qrScannerView.startRunning()
}
}
extension ViewController: QRScannerViewDelegate {
func qrScannerView(_ qrScannerView: QRScannerView, didFailure error: QRScannerError) {
print(error)
}
func qrScannerView(_ qrScannerView: QRScannerView, didSuccess code: String) {
print(code)
}
}
定制
源代码方式
override func viewDidLoad() {
super.viewDidLoad()
let qrScannerView = QRScannerView(frame: view.bounds)
// Customize focusImage, focusImagePadding, animationDuration
qrScannerView.focusImage = UIImage(named: "scan_qr_focus")
qrScannerView.focusImagePadding = 8.0
qrScannerView.animationDuration = 0.5
qrScannerView.configure(delegate: self)
view.addSubview(qrScannerView)
qrScannerView.startRunning()
}
界面构建器方式
设置自定义类 | 自定义 |
---|---|
![]() |
![]() |
添加FlashButton
final class ViewController: UIViewController {
...
@IBOutlet var flashButton: FlashButton!
@IBAction func tapFlashButton(_ sender: UIButton) {
qrScannerView.setTorchActive(isOn: !sender.isSelected)
}
}
extension ViewController: QRScannerViewDelegate {
...
func qrScannerView(_ qrScannerView: QRScannerView, didChangeTorchActive isOn: Bool) {
flashButton.isSelected = isOn
}
}
添加模糊效果
源代码方式
qrScannerView.configure(delegate: self, input: .init(isBlurEffectEnabled: true))
界面构建器方式
自定义 |
---|
![]() |
提交者
- Hitsu (@hitsubunnu)
- Sonny (@tedbrosby)
- Daichiro (@daichiro)
贡献
在提交贡献至 Mercari 之前,请仔细阅读 CLA 协议。在任何情况下,通过提交贡献,您被认为接受并同意受 CLA 条款和条件的约束。
许可
版权所有 2019 Mercari, Inc.
许可协议为 MIT 协议。