Swift:截取 viewController 并在 Facebook 上分享
Posted
技术标签:
【中文标题】Swift:截取 viewController 并在 Facebook 上分享【英文标题】:Swift: Take a screenshot of the viewController and share it on Facebook 【发布时间】:2017-11-17 14:01:40 【问题描述】:我创建了以下功能来在 Facebook 上分享帖子:
@IBAction func socialShare(_ sender: Any)
//Alert
let alert = UIAlertController(title: "Share", message: "First share!", preferredStyle: .actionSheet)
//First action
let actionOne = UIAlertAction(title: "Share on Facebook", style: .default) (action) in
//Checking if user is connected to Facebook
if SLComposeViewController.isAvailable(forServiceType: SLServiceTypeFacebook)
let post = SLComposeViewController(forServiceType: SLServiceTypeFacebook)!
post.setInitialText("First")
post.add(UIImage(named: "Mylogo.png"))
self.present(post, animated: true, completion: nil)
else self.showAlert(service: "Facebook")
let actionThree = UIAlertAction(title: "Cancel", style: .cancel, handler: nil)
//Add action to action sheet
alert.addAction(actionOne)
alert.addAction(actionThree)
//Present alert
self.present(alert, animated: true, completion: nil)
func showAlert(service:String)
let alert = UIAlertController(title: "Error", message: "You are not connected to \(service)", preferredStyle: .alert)
let action = UIAlertAction(title: "Dismiss", style: .cancel, handler: nil)
alert.addAction(action)
present(alert, animated: true, completion: nil)
但我真正想做的是分享一张图片,这张图片必须是用户点击分享按钮的viewController的截图。这可能吗?如果有,怎么做?
更新:
对于截图,我找到了这样的功能:
func screenShotMethod()
//Create the UIImage
UIGraphicsBeginImageContext(view.frame.size)
view.layer.renderInContext(UIGraphicsGetCurrentContext())
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
//Save it to the camera roll
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil)
但我不知道如何在我的代码中实现它。
【问题讨论】:
也许你应该更好地描述一下你的问题是什么。第二段代码是在“image”变量中创建 UIImage。你只需要使用它而不是“UIImage(命名:“Mylogo.png”)”。但我不确定这是你想要的。 【参考方案1】:要做到这一点,你可以这样做
func screenShotMethod() -> UIImage?
//Create the UIImage
UIGraphicsBeginImageContext(view.frame.size)
view.layer.render(in: UIGraphicsGetCurrentContext()!)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
并将其添加到:
let post = SLComposeViewController(forServiceType: SLServiceTypeFacebook)!
post.setInitialText("First")
post.add(screenShotMethod())
self.present(post, animated: true, completion: nil)
【讨论】:
screenShotMethod()
返回一个可选图像,最好使用 guard 或者 if let
当然!但是 post.add 方法接受可选值,不是吗?以上是关于Swift:截取 viewController 并在 Facebook 上分享的主要内容,如果未能解决你的问题,请参考以下文章
关闭一个 ViewController 并呈现另一个 ViewControlloer - IOS - Swift 3
swift 创建一个新的viewController文件并使用storyboard附加swift文件
在 Swift 中实例化并展示一个 viewController
如何将第二个viewcontroller文本字段值传递给第一个viewcontroller数组并在swift4中点击按钮时关闭
ViewController 将 Swift 从一个 VC 推送到另一个 VC 并返回
如何使用 FlipAnimation 从每个 CollectionViewCell 打开一个新的 ViewController 并关闭 Swift 3