我是一名新的iOS开发人员。我想知道如何在Swift中生成条形码。
我已经有了代码,可以从多种资源中学习如何读取条形码,但是我没有发现任何有关从字符串生成条形码的内容。
非常感谢!
PS:我知道对此也有类似的问题,但这是针对Objective-C的。我不了解Obj-C,但发现来自.NET很难。
您可以使用CoreImage(import CoreImage)过滤器来做到这一点!
import CoreImage
~~~~
class Barcode { class func fromString(string : String) -> UIImage? { let data = string.data(using: .ascii) if let filter = CIFilter(name: "CICode128BarcodeGenerator") { filter.setValue(data, forKey: "inputMessage") if let outputCIImage = filter.outputImage { return UIImage(ciImage: outputCIImage) } } return nil } } let img = Barcode.fromString("whateva")
较新的版本,guard且初始化程序失败:
guard
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) } }
用法:
let barcode = UIImage(barcode: "some text") // yields UIImage?
根据文档:
根据ISO / IEC 15417:2007标准生成代表输入数据的输出图像。输出图像中条形码的每个模块(垂直线)的宽度为一个像素。条形码的高度为32像素。要从字符串或URL创建条形码,请使用NSASCIIStringEncoding字符串编码将其转换为NSData对象。