Generador de códigos QR en Swift (iOS/macOS): biblioteca EFQRCode
Los códigos QR se han convertido en una parte esencial de las aplicaciones modernas, desde la autenticación hasta la transferencia de enlaces y contactos. Si estás desarrollando para iOS o macOS en Swift, no necesitas escribir algoritmos de codificación complejos desde cero. La biblioteca lista EFQRCode proporciona una API conveniente para crear, leer y personalizar códigos QR. En este artículo, analizaremos sus capacidades, instalación y ejemplos de uso.
¿Qué es EFQRCode?
EFQRCode es una biblioteca de código abierto escrita en Swift. Es compatible con iOS (desde la versión 9.0) y macOS (10.11+). Las principales características son:
- Generación de códigos QR a partir de cadenas, direcciones URL, contactos vCard y texto.
- Configuración de color, fondo, tamaño y nivel de corrección de errores.
- Adición de marcas de agua (logotipos, imágenes) en el centro del código QR.
- Creación de códigos QR animados (GIF).
- Decodificación de códigos QR a partir de imágenes.
La biblioteca utiliza el CIFilter integrado de Core Image, pero añade muchas envolturas y personalizaciones convenientes.
Instalación a través de Swift Package Manager
Añade el paquete EFQRCode a tu proyecto Xcode:
// En Xcode: File → Add Packages...// Pega la URL del repositorio:https://github.com/EFPrefix/EFQRCode.git// Selecciona la versión (se recomienda "Up to Next Major")O añade manualmente la dependencia en Package.swift:
dependencies: [ .package(url: "https://github.com/EFPrefix/EFQRCode.git", from: "6.0.0")]Ejemplo básico de generación de código QR
La forma más sencilla de crear un código QR a partir de una cadena:
import EFQRCode
// Creación de un código QR a partir de textoif let image = EFQRCode.generate( content: "https://pythonlib.ru", size: EFIntSize(width: 300, height: 300)) { // Usa image (CGImage) para mostrarlo // Por ejemplo, en UIImageView en iOS: let uiImage = UIImage(cgImage: image) imageView.image = uiImage}El resultado es un código QR estándar en blanco y negro de 300x300 píxeles.
Personalización de color y fondo
Puedes establecer un color de primer plano y de fondo arbitrarios:
import EFQRCode
let qrImage = EFQRCode.generate( content: "¡Hola, Swift!", size: EFIntSize(width: 400, height: 400), backgroundColor: UIColor.yellow.cgColor, foregroundColor: UIColor.blue.cgColor, inputCorrectionLevel: .h // corrección de errores máxima)El parámetro inputCorrectionLevel acepta los valores .l (7%), .m (15%), .q (25%), .h (30%). Cuanto mayor sea el nivel, más datos se pueden recuperar en caso de daño.
Adición de logotipo (marca de agua)
Para colocar un logotipo en el centro del código QR, usa el método generateWithWatermark:
import EFQRCode
let watermarkImage = UIImage(named: "logo")?.cgImagelet qrWithLogo = EFQRCode.generateWithWatermark( content: "https://pythonlib.ru", size: EFIntSize(width: 500, height: 500), watermark: watermarkImage, watermarkMode: .center)Importante: el logotipo no debe ocupar más del 30% del área, de lo contrario, el código podría no ser legible.
Creación de un código QR animado (GIF)
EFQRCode admite la generación de códigos QR animados. Por ejemplo, se puede crear un GIF con colores cambiantes:
import EFQRCode
let qrCodeGIF = EFQRCode.generateGIF( content: "QR Animado", size: EFIntSize(width: 200, height: 200), data: [someData] // array de fotogramas)Para una animación simple, se pueden usar colores predefinidos. Más detalles en la documentación de la biblioteca.
Decodificación de un código QR a partir de una imagen
Para leer un código QR de una foto o captura de pantalla:
import También en la biblioteca
Validación de datos en Swift (iOS/macOS): herramientas y práctica
Clap — potente framework CLI para Rust
Trabajo con fechas en Java: revisión de las bibliotecas java.time, Joda-Time y Apache Commons