SwiftQRCodeScanner: Swift-Powered QR Code Solutions

Features

  • Easy to use
  • Customize everything
  • Scan QR Code from saved photos
QR Scanner

Screenshots

Without camera and flashWith camera and flash

Example

To run the example project, clone the repo, go to Example folder and open SwiftQRScanner.xcworkspace.

Requirements

  • iOS 10.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’

Swift Package Manager Installation

Swift Package Manager

dependencies: [
    .package(url: "https://github.com/vinodiOS/SwiftQRCodeScanner.git", from: "1.1.6")
]

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.

Do you want to use SwiftQRCodeScanner with SwiftUI?

Please follow this example QRCodeSwiftUIExample.

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.

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

To use more features like camera switch, flash and many other options use QRScannerConfiguration:

var configuration = QRScannerConfiguration()
configuration.cameraImage = UIImage(named: "camera")
configuration.flashOnImage = UIImage(named: "flash-on")
configuration.galleryImage = UIImage(named: "photos")

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

And finally implement delegate methods to get result:

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

func qrScanner(_ controller: UIViewController, didFailWithError error: SwiftQRCodeScanner.QRCodeError) {
    print("error:\(error.localizedDescription)")
}

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

Complete code:

import UIKit
import SwiftQRScanner

class ViewController: UIViewController {
        
    @IBAction func scanQRCode(_ sender: Any) {
    
        //Simple QR Code Scanner
        let scanner = QRCodeScannerController()
        scanner.delegate = self
        self.present(scanner, animated: true, completion: nil)
    }
    
    @IBAction func scanQRCodeWithExtraOptions(_ sender: Any) {
        
        //Configuration for QR Code Scanner
        var configuration = QRScannerConfiguration()
        configuration.cameraImage = UIImage(named: "camera")
        configuration.flashOnImage = UIImage(named: "flash-on")
        configuration.galleryImage = UIImage(named: "photos")
        
        let scanner = QRCodeScannerController(qrScannerConfiguration: configuration)
        scanner.delegate = self
        self.present(scanner, animated: true, completion: nil)
    }
    
}

extension ViewController: QRScannerCodeDelegate {    
    func qrScanner(_ controller: UIViewController, didScanQRCodeWithResult result: String) {
        print("result:\(result)")
    }
    
    func qrScanner(_ controller: UIViewController, didFailWithError error: SwiftQRCodeScanner.QRCodeError) {
        print("error:\(error.localizedDescription)")
    }
    
    func qrScannerDidCancel(_ controller: UIViewController) {
        print("SwiftQRScanner did cancel")
    }
}

You can use following QRScannerConfiguration properties:

Property NameDefault ValueDescription
title"Scan QR Code"Title of SwiftQRCodeScanner
hint"Align QR code within frame to scan"Hint for QR Code scan suggestion
uploadFromPhotosTitle"Upload from photos"Button title for pick QR Code from saved photos
invalidQRCodeAlertTitle"Invalid QR Code"Title for Alert if invalid QR Code
invalidQRCodeAlertActionTitle"OK"Title for Action if invalid QR Code
cameraImagenilImage for camera switch button
flashOnImagenilImage for flash button
length20.0Length of QR Code scanning frame
colorgreenColor of QR Code scanning frame
radius10.0Corner Radius of QR Code scanning frame
thickness5.0Corner Thickness of QR Code scanning frame
readQRFromPhotostrueHide/show "Upload From photos" button
cancelButtonTitle"Cancel"Title for cancel button
cancelButtonTintColornilColor for cancel button
hideNavigationBarfalseHide/show navigation bar

Download Details:

Author: vinodiOS
Source Code: https://github.com/vinodiOS/SwiftQRCodeScanner 
License: MIT license

#swift #qr #scanner 

SwiftQRCodeScanner: Swift-Powered QR Code Solutions
1.10 GEEK