An easy QR code reader for iOS written in Swift

SwiftQRCodeScanner

An easy QR code reader for iOS written in Swift.

Screenshots

Without camera and flash buttons:

With camera and flash buttons:

Example

To run the example project, clone the repo, and run pod install from the Example directory first.

Requirements

  • iOS 9.0
  • Xcode 11.0+
  • Swift 5

Installation

Using CocoaPods

SwiftQRScanner is available through CocoaPods. To install
it, simply add the following line to your Podfile:

pod 'SwiftQRScanner', :git => ‘https://github.com/vinodiOS/SwiftQRScanner’

Manual Installation

Download the latest version ,then unzip & drag-drop the Classes folder inside your iOS project. You can do that directly within Xcode,
just be sure you have the copy items if needed and the create groups options checked.

How to use

Import SwiftQRScanner module and confirm to the QRScannerCodeDelegate protocol.

#import SwiftQRScanner

class ViewController: UIViewController {
}

extension ViewController: QRScannerCodeDelegate {
}

Create instance of SwiftQRScanner to scan QR code. To use SwiftQRScanner with simple cancel button option you can code like following:

let scanner = QRCodeScannerController()
scanner.delegate = self
self.present(scanner, animated: true, completion: nil)

To use more features like camera switch , flash and cance options you can provide images like following:

let scanner = QRCodeScannerController(cameraImage: UIImage(named: "camera"), cancelImage: UIImage(named: "cancel"), flashOnImage: UIImage(named: "flash-on"), flashOffImage: UIImage(named: "flash-off"))
scanner.delegate = self
self.present(scanner, animated: true, completion: nil)

And finally implement delegate methods to get result:

func qrScanner(_ controller: UIViewController, scanDidComplete result: String) {
    print("result:\(result)")
}

func qrScannerDidFail(_ controller: UIViewController, error: String) {
    print("error:\(error)")
}

func qrScannerDidCancel(_ controller: UIViewController) {
    print("SwiftQRScanner did cancel")
}

Author

Vinod, vinod.jagtap@hotmail.com

GitHub