如何在Swift中同时分享图像和文本?

22

我正在尝试在Swift中分享图像和文本。但是,当我选择通过Facebook、Messenger或WhatsApp分享时,它只给出了文本(图像没有被分享)。我正在使用UIActivityViewController进行分享。

这是我的代码:

func displayShareSheet(latitude:NSString?, longitude:NSString?, image:UIImage?, address:NSString? ) {
    let activityViewController = UIActivityViewController(activityItems: [(latitude as NSString?)!, (longitude as NSString?)!, (image as UIImage?)!, (address as NSString?)!], applicationActivities: nil)
    presentViewController(activityViewController, animated: true, completion: {}
)
}

你可以尝试这个:https://dev59.com/OlsV5IYBdhLWcg3wrAdJ - Sanjeet Verma
这将共享图像或文本。@Sanjeetverma - hussain
请提供原始文本以进行翻译。 - Sanjeet Verma
3个回答

14

以下是我正在使用的UIActivityViewController代码。同时附上了两种方法的屏幕截图。

 func shareImage() {
            let img = UIImage(named: "SoSampleImage")
            let messageStr = "Ketan SO"
            let activityViewController:UIActivityViewController = UIActivityViewController(activityItems:  [img!, messageStr], applicationActivities: nil)
            activityViewController.excludedActivityTypes = [UIActivityTypePrint, UIActivityTypePostToWeibo, UIActivityTypeCopyToPasteboard, UIActivityTypeAddToReadingList, UIActivityTypePostToVimeo]
            self.presentViewController(activityViewController, animated: true, completion: nil)
        }

UIActivityViewController示例的屏幕截图:

在此输入图片描述

另一种使用SLComposeViewController的方法:

func share(){
        let img = UIImage(named: "SoSampleImage")
        let composeSheet = SLComposeViewController(forServiceType: SLServiceTypeFacebook)
        composeSheet.setInitialText("Hello, Ketan!")
        composeSheet.addImage(img)
        self.presentViewController(composeSheet, animated: true, completion: nil)
    }

SLComposeViewController示例的屏幕截图:

在此输入图片描述

希望这会对你有所帮助。

如果您有任何疑问,请告诉我。


@hussain,你的问题是关于FB的,所以我只为FB准备了代码...但我认为它应该适用于所有支持同时分享图像和文本的选项... - Ketan P
如果其中一个不起作用,你可以分享你的代码吗?你遇到了什么错误? - Ketan P
这不会在分享到Facebook Messenger时共享文本。你怎么做到的? - AndiAna
@AndiAna 可能现在 SDK 已经更改了,需要检查一下。 - Ketan P
当您尝试将文本和图像一起发送到WhatsApp时,此方法将无法正常工作。 参考:https://developer.apple.com/forums/thread/670873 - Shankar
显示剩余8条评论

0
我通过使用在this GitHub repository中提供的VisualActivityViewController来实现此目标。 它为我提供了一个漂亮的自定义视图,能够向用户展示要分享的文本和图片。

0

试试这个,这对我有效!!!

@IBAction func btnExport(sender: AnyObject)
{

    print("Export")
    let someText:String = "Hello want to share text also"
    let objectsToShare:UIImage = self.imgView.image!
    let sharedObjects:[AnyObject] = [objectsToShare,someText]
    let activityViewController = UIActivityViewController(activityItems : sharedObjects, applicationActivities: nil)
    activityViewController.popoverPresentationController?.sourceView = self.view

    activityViewController.excludedActivityTypes = [ UIActivityTypeAirDrop, UIActivityTypePostToFacebook,UIActivityTypePostToTwitter]

    self.presentViewController(activityViewController, animated: true, completion: nil)
}

它在Facebook、WhatsApp和Messenger上无法工作。 如果您想发送电子邮件或短信,则可以使用此功能。 - hussain

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接