UIActivityViewController和UIImage预览

时间:2017-08-22 16:34:50

标签: ios swift uiimage uiactivityviewcontroller

我尝试使用UIActivityViewController(在iMessage,Telegram,WhatsApp和其他网站上)分享图片。

我正在做:

let image = ... // an image
let activityViewController = UIActivityViewController(activityItems: [image], applicationActivities: nil)
self.present(activityViewController, animated: true, completion: nil)

但是图像裁剪非常糟糕。我还尝试使用UIActivityItemSource在用户共享操作之前调整图片大小,但结果会根据用户设备和图片而改变

如何在所有设备和应用上实现完美预览?有什么建议或参考吗?

这是最终结果的一个例子:

Sample share

第一张图片是Sticker中分享为iMessage的图片,第二张图片是UIActivityViewController

分享的图片

1 个答案:

答案 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)