【问题标题】:UIImageView content is not shared [duplicate]UIImageView 内容未共享[重复]
【发布时间】:2019-12-22 21:26:26
【问题描述】:

我的应用中有这段代码

guard let codeImage = imgQRCode.image else {
        return
    }
    PHPhotoLibrary.requestAuthorization({status in
        DispatchQueue.main.async {
            if status == .authorized {
                let ac = UIActivityViewController(activityItems: [codeImage], applicationActivities: nil)
                self.present(ac, animated: true, completion: nil)
            } else {
                self.showOkAlert(messageTitle: "Access not granted", messageText: "Code image not saved.", okText: "OK", {})
            }
        }
})

但是 imgQRCode UIImageView 中显示的内容(生成的二维码)没有通过 UIActivityViewController 保存到照片库,并且 XCode 控制台日志中显示错误“ContactQR[997:63907] [GatekeeperXPC] 与 assetsd 的连接被中断或 assetsd 死亡”。 如果我用代码替换保护部分

let codeImage = UIImage(named: "Ghost")

使用资产中的图片将其正确共享到照片库。正常的UIImage为什么不是二维码图片?

【问题讨论】:

  • imgQRCode.image是什么返回类型,是UIImage吗? (可能是 cgImage)
  • 是的,它是 UIImage 但不是可选的。正如我所写,它适用于从资产图片目录分配的 UIImage。

标签: swift uiimage uiactivityviewcontroller


【解决方案1】:

终于帮助渲染了 UIImageView 的图片

let renderer = UIGraphicsImageRenderer(size: imgQRCode.bounds.size)
let renderedImage = renderer.image(actions: {context in
    imgQRCode.drawHierarchy(in: imgQRCode.bounds, afterScreenUpdates: true)
})

剩下的代码

PHPhotoLibrary.requestAuthorization({status in
    DispatchQueue.main.async {
        if status == .authorized {
            let ac = UIActivityViewController(activityItems: [renderedImage], applicationActivities: nil)
            self.present(ac, animated: true, completion: nil)
        } else {
            self.showOkAlert(messageTitle: "Access not granted", messageText: "Code image not saved.", okText: "OK", {})
        }
    }
})

现在完美运行。谢谢@twostraws

【讨论】:

  • 这个答案决不能从问题中给出的信息中得出。这也是错误的,因为您不应该调用drawHierarchy 来完成这项工作。这个问题没有说明image 的来源。可能您使用 CIImage 不正确(例如,您可能尝试说 UIImage(ciImage:)),但无法判断,因为您没有(并且仍然没有)告诉我们这些信息。
  • 图片来自UIImage(ciImage: resampledQRCodeImage)
  • 是的,这就是问题所在。错了。
猜你喜欢
  • 1970-01-01
  • 2015-08-10
  • 1970-01-01
  • 2021-06-04
  • 1970-01-01
  • 2014-08-06
  • 2013-06-11
  • 2014-02-20
  • 1970-01-01
相关资源
最近更新 更多