Jeśli nie chcesz używać kodu QRCode pod numerem, musisz utworzyć własny wzór, aby wygenerować/odczytać obraz.
Ale może ty można użyć kodu QR.
Kod QRCode ma error correction level. Biorąc to pod uwagę, wciąż możesz sprawić, że Twój QRCode będzie wyglądał bardziej estetycznie, o co prosiłeś. Pamiętaj tylko, że "im wyższy poziom korekcji błędów, tym mniejsza pojemność pamięci", możesz dostosować obraz tak długo, jak algorytm może uzyskać potrzebne informacje.
Podczas generowania obrazu QRCode można zrobić to tak:
Swift 3,1
private enum InputCorrectionLevel: String {
case low = "L" // 7%
case medium = "M" // 15%
case high = "Q" // 25%
case ultra = "H" // 30%
}
private enum QRCodeGenerationError {
case initializingFilter
case applyingFilter
}
func qrCode(from string: String, withSize frameSize: CGSize) throws -> CIImage {
guard let filter = CIFilter(name: "CIQRCodeGenerator") else {
throw QRCodeGenerationError.initializingFilter
}
let data = string.data(using: .isoLatin1, allowLossyConversion: false)
filter.setValue(data, forKey: "inputMessage")
filter.setValue(InputCorrectionLevel.low.rawValue, forKey: "inputCorrectionLevel")
guard let outputImage = filter.outputImage else {
throw QRCodeGenerationError.applyingFilter
}
let scaleX = frameSize.width/outputImage.extent.size.width
let scaleY = frameSize.height/outputImage.extent.size.height
let qrCodeCIImage = outputImage.applying(CGAffineTransform(scaleX: scaleX, y: scaleY))
return qrCodeCIImage
}
Wystarczy sprawdzenie w jaki sposób na to poszedł. Czy udało ci się zrobić coś podobnego do kodu snapcode niż używając poniższego rozwiązania? – Chaz
Witam Rohanie, że masz rozwiązanie tego, chcę zbudować to samo. –
Czy znalazłeś coś Rohana? – hyd00