如何解决SwiftUI:带条形码的图像不显示
我正在尝试展示UIImage的实例,该实例是从字符串中以条形码形式生成的:
if let image = UIImage(barcode: "1234567890") {
Image(uiImage: image)
}
但是它显示空矩形,尽管在调试中image
填充了真实图像:
我使用一个简单的UIImage扩展来从字符串生成带有条形码的UIImage:
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)
}
}
怎么了?有什么想法吗?
解决方法
是的,看起来与Image有一些缺陷/不兼容。您可以向Apple提交反馈。
同时,这是一种解决方法。经过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)
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。