Swiftで画像とテキストの両方を共有しようとしています。しかし、Facebook、メッセンジャー、または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: {}
)
}
以下は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の例のスクリーンショット:
お役に立てれば幸いです。
ご不明な点がありましたらお知らせください。
このGitHubリポジトリ にあるVisualActivityViewController
を使用してこれを実現します
また、ユーザーに共有するテキストと画像の両方を表示する、素敵なカスタムビューも表示されます。
これを試してみてくださいこれは私のために働いています!!!
@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)
}