SwiftUI: a imagem com código de barras não aparece
Sep 07 2020
Estou tentando apresentar uma instância de UIImage, gerado como um código de barras de uma string:
if let image = UIImage(barcode: "1234567890") {
Image(uiImage: image)
}
Mas mostra um retângulo vazio , embora na depuração o imageseja preenchido com a imagem real:
Eu uso uma extensão UIImage simples para gerar um UIImage com código de barras de uma string:
extension UIImage {
convenience init?(barcode: String) {
let data = barcode.data(using: .ascii)
guard let filter = CIFilter(name: "CICode128BarcodeGenerator") else {
return nil
}
filter.setValue(data, forKey: "inputMessage")
guard let ciImage = filter.outputImage else {
return nil
}
self.init(ciImage: ciImage)
}
}
O que há de errado? Alguma ideia?
Respostas
3 Asperi Sep 07 2020 at 21:11
Sim, parece algum defeito / incompatibilidade com a imagem. Você pode enviar um feedback para a Apple.
Enquanto isso, aqui está uma solução alternativa. Testado com Xcode 12 / iOS 14
struct TestBarCodeView: View {
var body: some View {
VStack {
BarCodeView(barcode: "1234567890")
.scaledToFit()
.padding().border(Color.red)
}
}
}
struct BarCodeView: UIViewRepresentable {
let barcode: String
func makeUIView(context: Context) -> UIImageView {
UIImageView()
}
func updateUIView(_ uiView: UIImageView, context: Context) {
uiView.image = UIImage(barcode: barcode)
}
}
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
Christopher Nolan uma vez se arrependeu de ter lido o 'roteiro de Pulp Fiction' de Quentin Tarantino