【问题标题】:How to share generated UIImage with siwft 4如何与 swift 4 共享生成的 UIImage
【发布时间】:2020-10-29 21:03:34
【问题描述】:

你好,我使用这个函数来创建一个二维码的 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] 连接无效”

【问题讨论】:

  • 很难说,因为您没有发布足够的代码让我实际复制它。两个想法。 (1) 我经常使用UIActivityViewController,你的代码看起来很好。你能发布更完整的代码吗?也许尝试使用静态 - 而不是生成的 - UIImage 代替? (2) 您是使用实际设备还是在模拟器中尝试?我实际上从未尝试过在模拟器中分享内容。
  • @Ben Rockey 我只看到了这个但不起作用
  • @dfd 我尝试使用设备和模拟器...结果相同

标签: swift xcode uiimage ios-sharesheet


【解决方案1】:

试试这个,它对我有用,但不通过在 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
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-08
    • 1970-01-01
    • 1970-01-01
    • 2019-11-23
    • 2021-01-28
    相关资源
    最近更新 更多