如何在 Swift 中生成 Codabar 条形码?

问题描述 投票:0回答:1

我正在尝试生成库德巴条形码,但无法使其正常工作。

这是我当前的代码:

import SwiftUI
import VisionKit
import CoreImage.CIFilterBuiltins

import RSBarcodes_Swift
import AVFoundation


class BarcodeViewModel: ObservableObject {
    @Published var barcodeImage: Image? = nil
    
    func generateBarcode(contents: String) {
        let gen = RSUnifiedCodeGenerator.shared
        gen.fillColor = UIColor.white
        gen.strokeColor = UIColor.black
        
        // Specify Codabar barcode type
        let machineReadableCodeObjectType = AVMetadataObject.ObjectType.codabar.rawValue
        
        // Ensure compatibility with the specified iOS version
        if #available(iOS 15.4, *) {
            print("Generating image with Codabar barcode: \(contents)")
            if let uiImage = gen.generateCode("A00031326002A", machineReadableCodeObjectType: AVMetadataObject.ObjectType.codabar.rawValue) {
                DispatchQueue.main.async {
                    self.barcodeImage = Image(uiImage: uiImage)
                }
            } else {
                DispatchQueue.main.async {
                    self.barcodeImage = Image(systemName: "xmark.circle")
                }
            }
        } else {
            print("iOS version does not support RSCodaBarGenerator")
        }
    }
}

我正在尝试构建一个简单的条形码扫描和显示工具作为更大的应用程序的一部分。如果有帮助的话,我很乐意附上该文件的其余代码。

我一直在努力反对这个问题有一段时间了,我想我应该在这里问。

希望得到任何帮助,到目前为止我还没有在网上找到任何好的资源。

到目前为止,我已经尝试了https://github.com/yeahdongcn/RSBarcodes_Swift中的不同示例语句,但一直无法弄清楚。我只是不断收到“未选择代码生成器”的信息。错误,我不知道如何克服它。

swift avfoundation barcode
1个回答
0
投票

这就是我修复它的方法:https://github.com/Coledunsby/CDCodabarView

请注意,从版本 1.1.0 开始,您必须按照此处所述手动编辑代码:https://github.com/Coledunsby/CDCodabarView/issues/8

此后这段代码对我有用:

import CDCodabarView

// Define your SwiftUI wrapper for the CDCodabarView
struct SwiftUIBarcodeView: UIViewRepresentable {
    var code: String
    
    func makeUIView(context: Context) -> CDCodabarView {
        let codabarView = CDCodabarView()
        codabarView.backgroundColor = .white // Set background color to white
        return codabarView
    }

    func updateUIView(_ uiView: CDCodabarView, context: Context) {
        uiView.code = code
        uiView.barColor = .black
        uiView.textColor = .red
        uiView.padding = 50
        uiView.hideCode = false
        uiView.font = UIFont(name: "AvenirNext-Regular", size: 15.0)!
        uiView.backgroundColor = .white // Ensure background color is set to white on update as well
    }
}

希望对同样遇到此问题的人有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.