2017-02-16 36 views
2

Я работаю в приложении, которое должно содержать QR-код с информацией, я знаю, как это сделать, но я должен установить цвет Qrcode от черного до красного и я, как я понимаю, должен быть легким, но я не могу найти хороший ответ, чтобы сделать это возможным, я позволю своему коду и моему экрану QrCode, спасибо.Как изменить цвет моего QR-кода

import UIKit 

class QRCodeViewController: UIViewController { 
    @IBOutlet weak var imgQRCode: UIImageView! 

    func generateQRCode(from string: String) -> UIImage? { 
     let data = string.data(using: String.Encoding.utf8) 
     if let filter = CIFilter(name: "CIQRCodeGenerator") { 
      filter.setValue(data, forKey: "inputMessage") 
      filter.setValue("H", forKey: "inputCorrectionLevel") 

      guard let qrCodeImage = filter.outputImage 
       else { 
        return nil 
      } 
      let scaleX = imgQRCode.frame.size.width/qrCodeImage.extent.size.width 
      let scaleY = imgQRCode.frame.size.height/qrCodeImage.extent.size.height 
      let transform = CGAffineTransform(scaleX: scaleX, y: scaleY) 

       if let output = filter.outputImage?.applying(transform) { 
        return UIImage(ciImage: output) 
       } 
      } 
      return nil 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     let image = generateQRCode(from: "Este es el código generado") 
     imgQRCode.image = image 
    } 
} 

QRCODE

+0

Любое изменение статуса, чтобы, если вы это работает? – MwcsMac

ответ

3

Изменить код на что-то вроде этого.

func generateQRCode(from string: String) -> UIImage? { 
    let data = string.data(using: String.Encoding.utf8) 
    if let filter = CIFilter(name: "CIQRCodeGenerator") { 
     guard let colorFilter = CIFilter(name: "CIFalseColor") else { return nil } 

     filter.setValue(data, forKey: "inputMessage") 

     filter.setValue("H", forKey: "inputCorrectionLevel") 
     colorFilter.setValue(filter.outputImage, forKey: "inputImage") 
     colorFilter.setValue(CIColor(red: 1, green: 1, blue: 1), forKey: "inputColor1") // Background white 
     colorFilter.setValue(CIColor(red: 1, green: 0, blue: 0), forKey: "inputColor0") // Foreground or the barcode RED 
     guard let qrCodeImage = colorFilter.outputImage 
      else { 
       return nil 
     } 
     let scaleX = imgQRCode.frame.size.width/qrCodeImage.extent.size.width 
     let scaleY = imgQRCode.frame.size.height/qrCodeImage.extent.size.height 
     let transform = CGAffineTransform(scaleX: scaleX, y: scaleY) 


     if let output = colorFilter.outputImage?.applying(transform) { 
      return UIImage(ciImage: output) 
     } 
    } 
    return nil 
} 

enter image description here

 Смежные вопросы

  • Нет связанных вопросов^_^