SwiftUI: Barkodlu görüntü görünmüyor

Sep 07 2020

Bir dizeden barkod olarak oluşturulan UIImage örneğini sunmaya çalışıyorum:

if let image = UIImage(barcode: "1234567890") {
    Image(uiImage: image)
}

Ancak , hata ayıklamada gerçek görüntü ile doldurulmuş olsa da, boş dikdörtgen gösterir image:

Bir dizeden barkodlu bir UIImage oluşturmak için basit bir UIImage uzantısı kullanıyorum:

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)
    }

}

Sorun nedir? Herhangi bir fikir?

Yanıtlar

3 Asperi Sep 07 2020 at 21:11

Evet, Görüntü ile bazı kusur / uyumsuzluk gibi görünüyor. Apple'a geri bildirimde bulunabilirsiniz.

Bu arada burada bir çözüm var. Xcode 12 / iOS 14 ile test edildi

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)
    }
}