- Easy to use
- Customize everything
- Scan QR Code from saved photos
Without camera and flash | With camera and flash |
---|---|
To run the example project, clone the repo, go to Example folder and open SwiftQRScanner.xcworkspace.
- iOS 10.0
- Xcode 11.0+
- Swift 5
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
dependencies: [
.package(url: "https://github.com/vinodiOS/SwiftQRCodeScanner.git", from: "1.1.6")
]
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.
Please follow this example QRCodeSwiftUIExample.
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 Name | Default Value | Description |
---|---|---|
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 |
cameraImage | nil | Image for camera switch button |
flashOnImage | nil | Image for flash button |
length | 20.0 | Length of QR Code scanning frame |
color | green | Color of QR Code scanning frame |
radius | 10.0 | Corner Radius of QR Code scanning frame |
thickness | 5.0 | Corner Thickness of QR Code scanning frame |
readQRFromPhotos | true | Hide/show "Upload From photos" button |
cancelButtonTitle | "Cancel" | Title for cancel button |
cancelButtonTintColor | nil | Color for cancel button |
hideNavigationBar | false | Hide/show navigation bar |
Vinod, vinod.jagtap@hotmail.com
SwiftQRScanner is available under the MIT license. See the LICENSE file for more info.