在活动视图控制器-Swift中共享屏幕截图

在活动视图控制器-Swift中共享屏幕截图,swift,share,screenshot,uiactivityviewcontroller,Swift,Share,Screenshot,Uiactivityviewcontroller,我正在开发一个应用程序的一部分,这样当你点击分享按钮时,它可以让你即时分享你的高分截图和一条消息。我无法制作/共享屏幕截图,当我点击共享按钮时,该应用程序只允许我复制默认文本或“邮寄”默认文本,不允许我发布到Facebook、Twitter、消息等 func shareButtonPress() { var postPhrase = "Just hit \(highscore)! Beat it! #SwypIt" //Generate the screenshot

我正在开发一个应用程序的一部分,这样当你点击分享按钮时,它可以让你即时分享你的高分截图和一条消息。我无法制作/共享屏幕截图,当我点击共享按钮时,该应用程序只允许我复制默认文本或“邮寄”默认文本,不允许我发布到Facebook、Twitter、消息等

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)

}

最好的方法是什么?谢谢

使用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)
 }

这就是我在应用程序中处理共享的方式

    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)
}
我使用.excludedatvitypes排除了许多共享选项

然后,每当你按下共享按钮,让它调用这个

socialShare(sharingText: "Just hit \(highscore)! Beat it! #SwypI", sharingImage: UIImage(named: "The screenshot you are saving"), sharingURL: NSURL(string: "http://itunes.apple.com/app/"))
您之所以不将Twitter和Facebook视为共享选项,是因为您需要在IPhone的设置中登录它们。而不是单个应用程序


希望这有帮助。

非常感谢!正是我需要的!请将我的答案标记为正确,这样它就被回答了,然后请进行投票。我将如何将屏幕截图实现为图像?我使用了你的方法,它一直有效,直到我尝试实现屏幕截图代码。屏幕截图将显示为空白,而消息仍然不是一个选项。谢谢我很感激你的回答,但恐怕我没有足够的声誉去评价它。我会给它打上正确的标记,并且我会确保建立声誉来提高投票率。谢谢。我来看看截图。你也在使用模拟器来测试你的应用程序吗?我正在使用模拟器来测试应用程序,尽管屏幕截图是空白的。谢谢你这么快回答<代码>ViewController.swift:207:36:可选类型“CGContext”的值未展开;你想用“!”吗或“?”?但在行
view.layer.renderContext(UIGraphicsGetCurrentContext())处生成错误