2015-01-13 10 views
7

私は共有ボタンをタップすると、ハイスコアのスクリーンショットをメッセージとともにすぐに共有できるように、アプリケーションの一部を開発しています。私はスクリーンショットを作成/共有することができませんでした。共有ボタンをタップすると、デフォルトのテキストをコピーするか、デフォルトのテキストを "メール"するだけで、Facebook、Twitter、メッセージに投稿することはできません、 もっと。アクティビティビューコントローラでのスクリーンショットの共有 - Swift

func shareButtonPress() { 

    var postPhrase = "Just hit \(highscore)! Beat it! #SwypIt" 

    //Generate the screenshot 
    UIGraphicsBeginImageContext(view.frame.size) 
    view.layer.renderInContext(UIGraphicsGetCurrentContext()) 
    var image = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 

    var postImage = UIImage(named: "\(image)") 

    var activityViewController : UIActivityViewController = UIActivityViewController(activityItems: [postPhrase, postImage!], applicationActivities: nil) 

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

} 

これについてはどのような方法がありますか?ありがとう!

答えて

10

これは、私は私のアプリで共有どのように処理するかです。

func socialShare(#sharingText: String?, sharingImage: UIImage?, sharingURL: NSURL?) { 
    var sharingItems = [AnyObject]() 

    if let text = sharingText { 
     sharingItems.append(text) 
    } 
    if let image = sharingImage { 
     sharingItems.append(image) 
    } 
    if let url = sharingURL { 
     sharingItems.append(url) 
    } 

    let activityViewController = UIActivityViewController(activityItems: sharingItems, applicationActivities: nil) 
    activityViewController.excludedActivityTypes = [UIActivityTypeCopyToPasteboard,UIActivityTypeAirDrop,UIActivityTypeAddToReadingList,UIActivityTypeAssignToContact,UIActivityTypePostToTencentWeibo,UIActivityTypePostToVimeo,UIActivityTypePrint,UIActivityTypeSaveToCameraRoll,UIActivityTypePostToWeibo] 
    self.presentViewController(activityViewController, animated: true, completion: nil) 
} 

私は.excludedActvityTypesを使用して共有オプションの数を除外しています。

あなたが共有ボタンを押したときに、それはこれを呼び出している

socialShare(sharingText: "Just hit \(highscore)! Beat it! #SwypI", sharingImage: UIImage(named: "The screenshot you are saving"), sharingURL: NSURL(string: "http://itunes.apple.com/app/")) 

あなたはIPhoneの設定内でそれらに署名する必要があるので、あなたが共有オプションとしてTwitterやFacebookが表示されない理由があります。個々のアプリではありません。

これが役に立ちます。

+0

ありがとうございました!ちょうど私が必要なもの! – tdh

+0

私の答えを正しいとマークして、答えがありアップアップしてください。 – PoisonedApps

+0

スクリーンショットをイメージとして実装するにはどうすればよいですか?私はあなたの方法を使用し、スクリーンショットコードを実装しようとするまで機能しました。スクリーンショットは空白になり、メッセージは引き続きオプションになりません。ありがとう! ;私はあなたの答えを感謝しますが、私はそれをupvoteするために十分な評判を持っていないことは恐れています。私はそれを正しくマークし、私はそれをupvoteする評判を構築することを確認します。 – tdh

0

SLComposeViewControllerを使用してください。

import Social 

func shareButtonPress() { 

    var postPhrase = "New high score \(highscore)!" 

    //Generate the screenshot 
    UIGraphicsBeginImageContext(view.frame.size) 
    view.layer.renderInContext(UIGraphicsGetCurrentContext()) 
    var image = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 

    var postImage = UIImage(named: "\(image)") 

    let shareToFacebook = SLComposeViewController(forServiceType: SLServiceTypeFacebook) 
    shareToFacebook.setInitialText(postPhrase) 
    shareToFacebook.addImage(postImage) 
    presentViewController(shareToFacebook, animated: true, completion: nil) 
} 

https://developer.apple.com/library/ios/documentation/NetworkingInternet/Reference/SLComposeViewController_Class/

+0

'ViewController.swift:207:36:オプションの型 'CGContext?'の値アンラップされていない。あなたは '!'を使うつもりでしたか?または '?'? ''ビルドエラー 'view.layer.renderInContext(UIGraphicsGetCurrentContext())' – Gank

関連する問題