admaDIC App Development & IT Solutions

SwiftUI: Generate QR Code

by Annett Schwarze | 2025-07-25

The CoreImage framework provides features to create a QR code. Importing `CIFilterBuiltins` adds access to the function `CIFilter.qrCodeGenerator()`, which returns a QR generator instance.

The data to be encoded in a QR code is defined with the property `message`. The correction level of the QR code is defined with `correctionLevel`. The property `outputImage` produces a `CIImage`.

        
import SwiftUI
import CoreImage
import CoreImage.CIFilterBuiltins
import UIKit

struct SampleQRCodeView: View {
    @State private var inputText: String = ""
    @State private var qrImage: UIImage? = nil

    var body: some View {
        VStack(alignment: .leading, spacing: 16) {
            Text("Sample QRCode View")
                .font(.largeTitle)
            Spacer()
            TextField("Text to encode", text: $inputText, onCommit: {
                generateQRCode()
            })
            .padding(8)
            .background {
                RoundedRectangle(cornerRadius: 12)
                    .fill(Color.white)
            }

            Button(action: generateQRCode) {
                Text("Generate")
                    .padding()
                    .frame(maxWidth: .infinity)
                    .background(Color.blue)
                    .foregroundColor(.white)
                    .cornerRadius(10)
            }
            Spacer()
            VStack(alignment: .center) {
                if let image = qrImage {
                    Image(uiImage: image)
                        .resizable()
                        .interpolation(.none)
                        .scaledToFit()
                        .frame(width: 300, height: 300)
                } else {
                    Color.clear
                        .frame(width: 300, height: 300)
                }
            }
            .padding(12)
            .background {
                RoundedRectangle(cornerRadius: 12)
                    .fill(Color(white: 1))
            }
            .frame(maxWidth: .infinity)
            Spacer()
            Spacer()
        }
        .padding()
        .background {
            Color(white: 0.9)
                .ignoresSafeArea()
        }
    }

    func generateQRCode() {
        let context = CIContext()
        let qrCodeGenerator = CIFilter.qrCodeGenerator()
        guard let data = inputText.data(using: .utf8) else { return }
        qrCodeGenerator.message =  data
        qrCodeGenerator.correctionLevel = "L"
        guard let ciImage = qrCodeGenerator.outputImage else { return }
        guard let cgImage = context.createCGImage(ciImage, from: ciImage.extent) else { return }
        qrImage = UIImage(cgImage: cgImage)
    }

}

#Preview {
    SampleQRCodeView()
}
    
SwiftUI QR Code Generation

 

www.admadic.de | webmaster@admadic.de | Legal Notice and Trademarks | Privacy
© 2005-2007 - admaDIC | All Rights Reserved
All other trademarks and/or registered trademarks are the property of their respective owners
Last Change: Fri Jul 25 09:56:58 2025 GMT