我试图分享我自己生成的图像。但是,当我尝试分享图像时,效果不佳。 这是分享的代码
func shareQR(){
//mainImage is the view that hold the image I want to share
let tempImage = view.mainImage.image
let imageToShare = [ tempImage ]
let activityViewController = UIActivityViewController(activityItems: imageToShare as! [UIImage], applicationActivities: nil)
activityViewController.popoverPresentationController?.sourceView = self.view
activityViewController.excludedActivityTypes = [ UIActivityType.airDrop ]
self.present(activityViewController, animated: true, completion: nil)
}
所以我尝试调试,结果是我的tempImage值与我想要分享的值相同。然后我尝试对图像进行硬编码并成为let tempImage = UIImage(named: "image.png")
并点按分享按钮,它完美无缺。
所以我想通了,我是否必须首先将我的图像保存到本地文件然后调用它?
如果是的话怎么样?我尝试使用此代码但失败了。
// Create path.
let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
let filePath = "\(paths[0])/temp.png"
// Save image.
UIImagePNGRepresentation(image!)?.write(to: filePath)
错误是:无法将“String”类型的值转换为预期值 此行中的参数类型“网址”
UIImagePNGRepresentation(tempImage!)?.write(to: filePath)
或许我不需要保存图片?怎么样?
谢谢
答案 0 :(得分:0)
您的变量image
似乎是String
变量而不是UIImage
(因此您发布的错误)。要确认此理论,请在代码中添加以下行
print(tempImage)
之后
let tempImage = view.mainImageimage
如果它打印图像名称,那么您的变量是String
变量。如果它按照UIImage
的行打印某些内容,那么它就是一张实际图片,我们可以进一步调查此问题。让我知道你得到的结果
修改强> 要在本地存储文件,请使用以下代码
if let data = UIImagePNGRepresentation(tempImage) {
let filename = getDocumentsDirectory().appendingPathComponent("copy.png")
try? data.write(to: filename)
}
func getDocumentsDirectory() -> URL {
let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
let documentsDirectory = paths[0]
return documentsDirectory
}