我尝试使用UIActivityViewController
(在iMessage,Telegram,WhatsApp和其他网站上)分享图片。
我正在做:
let image = ... // an image
let activityViewController = UIActivityViewController(activityItems: [image], applicationActivities: nil)
self.present(activityViewController, animated: true, completion: nil)
但是图像裁剪非常糟糕。我还尝试使用UIActivityItemSource
在用户共享操作之前调整图片大小,但结果会根据用户设备和图片而改变
如何在所有设备和应用上实现完美预览?有什么建议或参考吗?
这是最终结果的一个例子:
第一张图片是Sticker
中分享为iMessage
的图片,第二张图片是UIActivityViewController
答案 0 :(得分:0)
尝试在使用UIActivityViewController之前压缩图像
var compressedImage: Data? = UIImageJPEGRepresentation(yourImage, 0.8)
var docsPath: String = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as? String ?? ""
var imagePath: String = URL(fileURLWithPath: docsPath).appendingPathComponent("image.jpg").absoluteString
var imageUrl = URL.init(fileURLWithPath: imagePath)
do {
try compressedImage?.write(to: imageUrl, options: .atomic)
} catch {
print(error)
}
// save the file
var activityViewController = UIActivityViewController(activityItems: ["Check this image", imageUrl], applicationActivities: nil)