Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

6 Commits

Repository files navigation

QRCodeSwiftUIExample

This demo shows use of SwiftQRCodeScanner using SwiftUI. This example uses Swift Package Manager as dependency manager.

Code

ContentView.swift

import SwiftUI
import SwiftQRCodeScanner
structContentView:View{@StateprivatevarisPresented=false@StateprivatevarshowExtraOptions=false@StateprivatevarscannedValue:String=""@StateprivatevartextColor:Color=.black
@Stateprivatevarresult:Result<String,QRCodeError>?varbody:someView{VStack(spacing:30){Text(scannedValue).foregroundColor(textColor)Button("Scan QR Code"){self.isPresented =true}Button("Scan QR Code with Extra Options"){self.showExtraOptions =trueself.isPresented =true}}.sheet(isPresented: $isPresented){QRScanner(showExtraOptions: $showExtraOptions, result:self.$result)}.onChange(of: result){ newValue inguardlet unwrappedResult = newValue else{return}switch unwrappedResult {case.success(let qrCodeString):self.scannedValue = qrCodeString
self.textColor =.black
case.failure(let qrCodeError):self.scannedValue = qrCodeError.localizedDescription
self.textColor =.red
}}}}

QRScanner.swift

import UIKit
import SwiftUI
import SwiftQRCodeScanner
structQRScanner:UIViewControllerRepresentable{@BindingvarshowExtraOptions:Bool@Bindingvarresult:Result<String,QRCodeError>?@Environment(\.presentationMode)varpresentationModefunc makeCoordinator()->QRScanner.Coordinator{returnCoordinator(self)}func makeUIViewController(context:Context)->QRCodeScannerController{varpicker:QRCodeScannerController?if showExtraOptions {varconfiguration=QRScannerConfiguration()
configuration.cameraImage =UIImage(named:"switch-camera-button")
configuration.flashOnImage =UIImage(named:"flash")
configuration.galleryImage =UIImage(named:"photos")
picker =QRCodeScannerController(qrScannerConfiguration: configuration)}else{
picker =QRCodeScannerController()}
picker!.delegate = context.coordinator
return picker!
}func updateUIViewController(_ uiViewController:QRCodeScannerController, context:Context){}}extensionQRScanner{classCoordinator:NSObject,QRScannerCodeDelegate{@Environment(\.presentationMode)varpresentationModevarparent:QRScannerinit(_ parent:QRScanner){self.parent = parent
}func qrScanner(_ controller:UIViewController, didScanQRCodeWithResult result:String){
parent.result =.success(result)
parent.presentationMode.wrappedValue.dismiss()}func qrScanner(_ controller:UIViewController, didFailWithError error:SwiftQRCodeScanner.QRCodeError){
parent.result =.failure(error)
parent.presentationMode.wrappedValue.dismiss()}func qrScannerDidCancel(_ controller:UIViewController){print("QR Controller did cancel")}}}

About

This demo shows use of SwiftQRCodeScanner in SwiftUI

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages