I have spent a lot of time trying to diagnose this issue and I am totally stuck, perhaps I am missing something very obvious.
Already tried:
- Saving the returned image to disk to see if it was being generated correctly (it was)
- Adding a colored background renders a square, so something is being loaded
- Marking the image with
.renderingMode(.original)
- Using
@State var img = UIImage()
and reassigning usingImage(uiImage:img).onAppear { self.img = self.generateQRCode(from: self.qrCodeString)! }
Any help would be sincerely appreciated!
import SwiftUI
struct ContentView: View {
let qrCodeString = "BEGIN:VCARD \n" +
"VERSION:2.1 \n" +
"FN:John Peter \n" +
"N:Peter;John \n" +
"TITLE:Admin \n" +
"TEL;CELL:+91 431 524 2345 \n" +
"TEL;WORK;VOICE:+91 436 542 8374 \n" +
"EMAIL;WORK;INTERNET:John@ommail.in \n" +
"URL:www.facebook.com \n" +
"URL: www.instagram.com \n" +
"ADR;WORK:;;423 ofce sales Center;Newark;DE;3243;USA \n" +
"ORG:xxx Private limited \n" +
"END:VCARD"
var body: some View {
Image(uiImage: generateQRCode(from: qrCodeString)!)
}
func generateQRCode(from string: String) -> UIImage? {
let data = string.data(using: String.Encoding.ascii)
if let filter = CIFilter(name: "CIQRCodeGenerator") {
filter.setValue(data, forKey: "inputMessage")
let transform = CGAffineTransform(scaleX: 3, y: 3)
if let output = filter.outputImage?.transformed(by: transform) {
return UIImage(ciImage: output)
}
}
return nil
}
}