【问题标题】:Screenshot by programming turns black - Swift编程的屏幕截图变黑 - Swift
【发布时间】:2017-07-01 11:43:33
【问题描述】:

我正在尝试通过 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。

【问题讨论】:

  • 在我的脑海中,数字(第一行的第三个参数)不应该是 1.0 而不是 0.0?
  • 您好,感谢您试一试!不幸的是,这不是解决方案。涉及此问题的其他线程表示 0.0 将返回与屏幕大小相同的图像,以及 Apple 自己的文档。尽管如此,我还是尝试了 1.0,但没有运气。

标签: swift image screenshot uiactivityviewcontroller uigraphicscontext


【解决方案1】:

于是我把代码改成如下,效果很好。

            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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-16
    相关资源
    最近更新 更多