[SwiftUI] IOS上的 QRcode 產生器
之後會把一些我常用的 Swift 5 的範例放過來 免得找到了又忘了
這是 Xcode 11 & Swift 5 & IOS 13 的環境的東西
因為主要是SwiftUI的改變 所以有個 SwiftUI 的標頭
找到整份完整的程式 一個簡單小範例
import SwiftUI
import CoreImage
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)
var uiImage: UIImage?
if let filter = CIFilter(name: "CIQRCodeGenerator",
parameters: ["inputMessage": data as any,
"inputCorrectionLevel": "L"]) {
if let outputImage = filter.outputImage,
let cgImage = CIContext().createCGImage(outputImage,
from: outputImage.extent) {
let size = CGSize(width: outputImage.extent.width * 3.0,
height: outputImage.extent.height * 3.0)
UIGraphicsBeginImageContext(size)
if let context = UIGraphicsGetCurrentContext() {
context.interpolationQuality = .none
context.draw(cgImage,
in: CGRect(origin: .zero,
size: size))
uiImage = UIGraphicsGetImageFromCurrentImageContext()
}
UIGraphicsEndImageContext()
}
}
return uiImage
}
}
這是 Xcode 11 & Swift 5 & IOS 13 的環境的東西
因為主要是SwiftUI的改變 所以有個 SwiftUI 的標頭
找到整份完整的程式 一個簡單小範例
import SwiftUI
import CoreImage
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)
var uiImage: UIImage?
if let filter = CIFilter(name: "CIQRCodeGenerator",
parameters: ["inputMessage": data as any,
"inputCorrectionLevel": "L"]) {
if let outputImage = filter.outputImage,
let cgImage = CIContext().createCGImage(outputImage,
from: outputImage.extent) {
let size = CGSize(width: outputImage.extent.width * 3.0,
height: outputImage.extent.height * 3.0)
UIGraphicsBeginImageContext(size)
if let context = UIGraphicsGetCurrentContext() {
context.interpolationQuality = .none
context.draw(cgImage,
in: CGRect(origin: .zero,
size: size))
uiImage = UIGraphicsGetImageFromCurrentImageContext()
}
UIGraphicsEndImageContext()
}
}
return uiImage
}
}
留言
張貼留言