Gerador de QR Codes em Swift (iOS/macOS): biblioteca EFQRCode
Os QR Codes se tornaram parte essencial dos aplicativos modernos — desde autenticação até compartilhamento de links e contatos. Se você desenvolve para iOS ou macOS em Swift, não precisa escrever algoritmos complexos de codificação do zero. A biblioteca pronta EFQRCode fornece uma API conveniente para criar, ler e personalizar QR Codes. Neste artigo, vamos explorar seus recursos, instalação e exemplos de uso.
O que é EFQRCode?
EFQRCode é uma biblioteca de código aberto escrita em Swift. Ela suporta iOS (a partir da versão 9.0) e macOS (10.11+). Principais recursos:
- Geração de QR Codes a partir de strings, URLs, contatos vCard e texto.
- Personalização de cor, fundo, tamanho e nível de correção de erros.
- Adição de marcas d'água (logotipos, imagens) no centro do QR Code.
- Criação de QR Codes animados (GIF).
- Decodificação de QR Codes a partir de imagens.
A biblioteca usa o CIFilter integrado do Core Image, mas adiciona várias abstrações e personalizações convenientes.
Instalação via Swift Package Manager
Adicione o pacote EFQRCode ao seu projeto Xcode:
// No Xcode: File → Add Packages...// Insira a URL do repositório:https://github.com/EFPrefix/EFQRCode.git// Selecione a versão (recomendado "Up to Next Major")Ou adicione manualmente a dependência no Package.swift:
dependencies: [ .package(url: "https://github.com/EFPrefix/EFQRCode.git", from: "6.0.0")]Exemplo básico de geração de QR Code
A maneira mais simples de criar um QR Code a partir de uma string:
import EFQRCode
// Criação de QR Code a partir de textoif let image = EFQRCode.generate( content: "https://pythonlib.ru", size: EFIntSize(width: 300, height: 300)) { // Use image (CGImage) para exibir // Por exemplo, em UIImageView no iOS: let uiImage = UIImage(cgImage: image) imageView.image = uiImage}O resultado é um QR Code padrão preto e branco de 300x300 pixels.
Personalização de cor e fundo
Você pode definir cores arbitrárias para o primeiro plano e o fundo:
import EFQRCode
let qrImage = EFQRCode.generate( content: "Olá, Swift!", size: EFIntSize(width: 400, height: 400), backgroundColor: UIColor.yellow.cgColor, foregroundColor: UIColor.blue.cgColor, inputCorrectionLevel: .h // correção máxima de erros)O parâmetro inputCorrectionLevel aceita os valores .l (7%), .m (15%), .q (25%), .h (30%). Quanto maior o nível, mais dados podem ser recuperados em caso de danos.
Adicionando logotipo (marca d'água)
Para colocar um logotipo no centro do QR Code, use o 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: o logotipo não deve ocupar mais de 30% da área, caso contrário o código pode não ser legível.
Criação de QR Code animado (GIF)
O EFQRCode suporta a geração de QR Codes animados. Por exemplo, você pode criar um GIF com cores variáveis:
import EFQRCode
let qrCodeGIF = EFQRCode.generateGIF( content: "QR Animado", size: EFIntSize(width: 200, height: 200), data: [someData] // array de quadros)Para animações simples, você pode usar cores prontas. Mais detalhes na documentação da biblioteca.
Decodificação de QR Code a partir de imagem
Para ler um QR Code de uma foto ou captura de tela:
import Também na biblioteca
Bouncy Castle Java: guia completo com exemplos práticos
ORM para Kotlin: comparação entre Exposed, Room e Ktorm com exemplos
Filas de tarefas para Rust: visão geral e exemplos de uso
Aprendizado de Máquina em Go: visão geral de bibliotecas e frameworks (Golang)