0

嗨,我使用此功能创建 QRCode 的 UIImage

func generateQRCode(string: String){
        let data = string.data(using: String.Encoding.ascii)

        if let filter = CIFilter(name: "CIQRCodeGenerator") {
            filter.setValue(data, forKey: "inputMessage")
            let transform = CGAffineTransform(scaleX: 3, y: 3)

            if let output = filter.outputImage?.transformed(by: transform) {
                imageQRCode.image = UIImage(ciImage: output)
                qrImage = UIImage(ciImage: output)
                self.tableView.reloadData()
            }
        }

    }

生成图像后,我想保存或打印它。我使用了这个功能

let shareText = NSLocalizedString("SHARE_QR_TITLE", comment: "")
            if let image = qrImage {
                let vc = UIActivityViewController(activityItems: [shareText, image], applicationActivities: [])
                present(vc, animated: true)
            }

但我不能分享它。我收到此错误:“[ShareSheet] 连接无效”

4

1 回答 1

0

试试这个,它对我有用,但不能通过在 WhatsApp 中分享来显示 qrcode。可以很好地处理消息、邮件、电报..

import UIKit

class QRCodeGeneratorViewController: UIViewController {
@IBOutlet var qrImageView: UIImageView!

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.
}

func generateQRCode(from string: String) -> UIImage? {
    let data = string.data(using: String.Encoding.ascii)
    
    
    if let filter = CIFilter(name: "CIQRCodeGenerator") {
        filter.setValue(data, forKey: "inputMessage")
        let transform = CGAffineTransform(scaleX: 3, y: 3)
        
        if let output = filter.outputImage?.transformed(by: transform) {
            return UIImage(ciImage: output)
        }
    }
    
    return nil
}

@IBAction func generateQRAction(_ sender: Any) {
    let image = generateQRCode(from: "iOS Developer")
    qrImageView.image = image
}

@IBAction func btnShareClk(_ sender: Any) {
    let shareText = "Hello, world!"

    if let image = qrImageView.image {
        let vc = UIActivityViewController(activityItems: [shareText, image], applicationActivities: [])
        present(vc, animated: true)
        vc.popoverPresentationController?.sourceView = self.qrImageView
    }
}
于 2020-07-09T10:31:09.623 回答