在iOS / Swift中获取当前屏幕的截图以便共享

我想在我的手机上启用一个function,允许用户点击共享,然后他们将能够给他们的朋友发短信,默认情况下包括应用程序的图片(就在用户点击共享之前)。 我不知道如何做到这一点 – 每当我search如何做到这一点,我得到的是关于如何在手机的照片库或相机共享图像的教程/答案。 任何想法如何做到这一点!

//从截图创build一个图像

UIGraphicsBeginImageContext(view.frame.size) view.layer.renderInContext(UIGraphicsGetCurrentContext()) let image = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() 

//分享图片

 var imagesToShare = [AnyObject]() imagesToShare.append(image) let activityViewController = UIActivityViewController(activityItems: imagesToShare , applicationActivities: nil) activityViewController.popoverPresentationController?.sourceView = self.view presentViewController(activityViewController, animated: true, completion: nil) 
 UIGraphicsBeginImageContext(self.view.bounds.size) self.view.drawHierarchy(in: view.bounds, afterScreenUpdates: false) let image = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() 

要在用户点击共享之前分享您的屏幕,首先您需要将屏幕视图更改为图像并共享。

要将您的视图更改为图像,您可以在代码中添加此扩展名。

 //UIView extension which converts the UIView into an image. extension UIView { func toImage() -> UIImage { UIGraphicsBeginImageContextWithOptions(bounds.size, false, UIScreen.mainScreen().scale) drawViewHierarchyInRect(self.bounds, afterScreenUpdates: true) let image = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return image } } 

在那里传递你的ViewController的视图,例如:

  let imageToShare = self.view.toImage() let activityItems : NSMutableArray = []() activityItems.addObject(imageToShare) let activityVC = UIActivityViewController(activityItems:activityItems as [AnyObject] , applicationActivities: nil) self.presentViewController(activityVC, animated: true, completion: nil) 

我希望这能够帮到你。