代码之家  ›  专栏  ›  技术社区  ›  Oleg Gordiichuk

ciqr发电机在cifilter中出现问题

  •  5
  • Oleg Gordiichuk  · 技术社区  · 6 年前

    我正在更新现有应用程序以支持iOS 12和奇怪的问题 CIFilter 出现。

    这是一个带有一个函数的简单类 generate() 以下内容:

    class QRGenerator {
        static func generate(from string: String) -> UIImage? {
            let context = CIContext()
            let data = string.data(using: String.Encoding.ascii)
    
            if let filter = CIFilter(name: "CIQRCodeGenerator") {
                filter.setValue(data, forKey: "inputMessage")
                let transform = CGAffineTransform(scaleX: 7, y: 7)
                if let output = filter.outputImage?.transformed(by: transform), let cgImage = context.createCGImage(output, from: output.extent) {
                    return UIImage(cgImage: cgImage)
                }
            }
            return nil
        }
    }
    

    这门课一直到12岁才学好。现在排队 if let filter = CIFilter(name: "CIQRCodeGenerator") 我总是收到零。

    我花了一些时间在苹果文档上,但没有找到任何关于这个问题的有用信息。

    2 回复  |  直到 6 年前
        1
  •  0
  •   user1046037    6 年前

    我对 CIFilters ,但您可以尝试获取所有可能的筛选器名称:

    let allFiltersNames = CIFilter.filterNames(inCategories: nil)
    

    我找不到一个匹配的 CIQRCodeGenerator 但是可能还有其他一些不同名称的过滤器可以满足您的需要。

        2
  •  1
  •   Sergio    6 年前

    我也遇到过这种情况,我还尝试使用外部库(如qrcode)生成qr。 https://github.com/aschuch/QRCode 但是QR的图像总是零。

    当我在Xcode10.0Beta2的iOS12.0(16A5308D)模拟器中安装应用程序时,它是零。

    但是当我把它安装在一个物理设备iphone se上时,它的iOS 12 beta 4(16a5339e)来自同一个xcode(10.0 beta 2),QR的生成完全没有问题。

    我还尝试了一个模拟的iPhone SE和iOS 11.4(15f79)从同一个Xcode(10.0测试版2)和完美的工作。