MercariQRScanner

A simple QR Code scanner framework for iOS. Provides a similar scan effect to ios13+.

Showing:

Popularity

Downloads/wk

0

GitHub Stars

164

Maintenance

Last Commit

5mos ago

Contributors

4

Package

Dependencies

0

License

MIT

Categories

Readme

QRScanner

A simple QR Code scanner framework for iOS. Provides a similar scan effect to ios13+. Written in Swift.

iOS 13.0+Use QRScanner in iOS 10.0+

"QR Code" is a registered trademark of DENSO WAVE INCORPORATED

Feature

  • Similar to iOS 13.0+ design
  • Simple usage Sample
  • Support for iOS 10.0+

Development Requirements

  • iOS 10.0+
  • Swift: 5.3
  • Xcode Version: 12.2

Installation

CocoaPods is the recommended method of installing QRScanner.

The Pod Way

  • Simply add the following line to your Podfile
  platform :ios, '10.0'
  pod 'MercariQRScanner'
  • Run command
  pod install
  • Write Import statement on your source file
  import MercariQRScanner

The Carthage Way

  • Move your project dir and create Cartfile
> touch Cartfile
  • add the following line to Cartfile
github "mercari/QRScanner"
  • Create framework
> carthage update --platform iOS
  • In Xcode, move to "General > Build Phase > Linked Frameworks and Libraries"
  • Add the framework to your project
  • Add a new run script and put the following code
/usr/local/bin/carthage copy-frameworks
  • Click "+" at Input file and Add the framework path
$(SRCROOT)/Carthage/Build/iOS/QRScanner.framework
  • Write Import statement on your source file
import QRScanner

Usage

See QRScannerSample

Add Privacy - Camera Usage Description to Info.plist file

The Basis Of Usage

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)
    }
}

Customization

Source Code Way

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()
}

Interface Builder Way

Setup Custom ClassCustomize

Add FlashButton

FlashButtonSample

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
    }
}

Add Blur Effect

Source Code Way

     qrScannerView.configure(delegate: self, input: .init(isBlurEffectEnabled: true))

Interface Builder Way

Customize

Committers

Contribution

Please read the CLA carefully before submitting your contribution to Mercari. Under any circumstances, by submitting your contribution, you are deemed to accept and agree to be bound by the terms and conditions of the CLA.

https://www.mercari.com/cla/

License

Copyright 2019 Mercari, Inc.

Licensed under the MIT License.

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100