10

我尝试了建议的内容,但输出是白色的空白屏幕截图。这使我假设我没有在视图中添加任何内容。这是我如何将图形添加到我的视图中。addChild 方法随 SpriteKit 一起提供,它接受 SKSpriteNodes:

  addChild(background)
    addChild(rate)
    addChild(scoreLabel)
    addChild(share)
    addChild(playAgain)
    addChild(highScoreLabel)
    addChild(scoreBackground)
    addChild(highScoreBackground)

这是截取屏幕截图的方法:

    UIGraphicsBeginImageContext(self.view!.bounds.size)
    self.view!.layer.renderInContext(UIGraphicsGetCurrentContext())
    let screenshot = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    UIImageWriteToSavedPhotosAlbum(screenshot, nil, nil, nil)

任何的意见都将会有帮助

4

2 回答 2

12

我认为这个问题可以与这个问题合并 到 iPhone 上的 Swift 截图只有白色背景

看起来一样

编辑:

我想我找到了解决办法。首先阅读这篇文章:如何截取 UIView 的屏幕截图?

我创建了一个 Extensions.swift 文件,在其中我使用该链接“扩展”了 UIView 的方法。

之后,我只需将以下内容连接到我的 sprite-kit 按钮

let screenshot = self.view?.pb_takeSnapshot()
UIImageWriteToSavedPhotosAlbum(screenshot, nil, nil, nil)

瞧,图像在相机胶卷中!

于 2015-01-04T10:29:43.373 回答
4

这是我在 swift 3 中解决它的方法: 这将捕获场景中的所有节点: 注意:在下面的代码中表示它正在捕获的视图。您可能希望使用您在项目中的视图来更新它。

func captureScreen() -> UIImage {
    UIGraphicsBeginImageContextWithOptions(yourview.bounds.size, true, 0)

    yourview.drawHierarchy(in: yourview.bounds, afterScreenUpdates: true)


    let image = UIGraphicsGetImageFromCurrentImageContext()!
    UIGraphicsEndImageContext()
    return image
}
于 2016-09-18T05:15:32.343 回答