0

我想通过UIUIActivityViewController从我的游戏共享截图。为此,我正在以编程方式创建一个屏幕快照,并通过UIActivityViewController传递它。截图通过编程变黑 - 斯威夫特

ActivityViewController似乎工作。但是,图像全是黑色的。

这是我的代码,我错过了吗?

UIGraphicsBeginImageContextWithOptions(view!.frame.size, false, 0.0) 
view!.layer.render(in: UIGraphicsGetCurrentContext()!) 
let image = UIGraphicsGetImageFromCurrentImageContext() 
UIGraphicsEndImageContext() 

let shareViewController = UIActivityViewController(activityItems: [image], applicationActivities: []) 
MenuScene.parentView.present(shareViewController, animated: true, completion: nil) 

MenuScene.parentView是GameViewController。

+0

关闭我头顶的数字(第一行的第三个参数)不应该是1.0而不是0.0? – nanothread59

+0

嗨,谢谢你给它一个镜头!不幸的是,这不是解决方案。接触这个问题的其他线程说0.0会返回一个与屏幕相同大小的图像,以及Apple自己的文档。尽管如此,我尝试了1.0,但没有像预期的那样运气。 – Developingdeveloper

回答

0

所以我将代码更改为以下内容,并获得了很好的结果。

  let bounds = UIScreen.main.bounds 
      UIGraphicsBeginImageContextWithOptions(bounds.size, true, 0.0) 
      yourUIViewController.view!.drawHierarchy(in: bounds, afterScreenUpdates: false) 

      let img = UIGraphicsGetImageFromCurrentImageContext() 
      UIGraphicsEndImageContext() 

      let activityViewController = UIActivityViewController(activityItems: [img!], applicationActivities: nil) 

当然,呈现视图。

yourUIViewController.present(activityViewController, animated: true, completion: nil)