A powerful Swift package that provides a simple and customizable QR code and barcode scanning experience using VisionKit framework.
- Supports QR code and barcode scanning.
- Provides an overlay with customizable color and corner styles.
- Configurable instruction text, padding, and window size for the scanner overlay.
- Simple integration with UIViewController.
- Uses Apple's VisionKit framework for accurate and high-performance scanning.
- iOS 16.0 or later
- Swift 5.7 or later
- UIKit and VisionKit frameworks
QRCodeReader can be added to your project using Swift Package Manager (SPM).
- In Xcode, go to File > Add Packages....
- Enter the package URL for the QRCodeReader repository.
- Select the appropriate version and add the package to your target.
import QRCodeReader
Ensure the device supports and has access to the scanner.
let qrReader = QRCodeReader()
if qrReader.isScanningAvailable() {
print("QR Scanner is available!")
} else {
print("QR Scanner is not supported on this device.")
}
To present the scanner, call the presentScanner(from:completion:)
method from any UIViewController
. This method will display the QR code or barcode scanner view and pass the scanned code back through the completion handler.
Example:
let qrReader = QRCodeReader()
qrReader.presentScanner(from: self) { scannedCode in
print("Scanned Code: \(scannedCode)")
}
The scanner appearance and behavior can be customized using the following properties:
overlayColor
: The color of the scanner overlay.cornerColor
: The color of the scanner corners.instructionText
: Instructional text displayed on the scanner.padding
: Padding around the scanner frame.windowSize
: Size of the scanner window.
Example:
qrReader.overlayColor = UIColor.black.withAlphaComponent(0.6)
qrReader.cornerColor = .systemBlue
qrReader.instructionText = "Place the QR code inside the frame"
qrReader.padding = 10
qrReader.windowSize = 300
QRCodeReader uses delegate methods to notify about scan completion or cancellation.
func qrScanner(didScanCode code: String) {
print("Scanned QR/Barcode: \(code)")
}
func qrScannerDidCancel() {
print("QR Scanner was cancelled.")
}