如何使用关卡游戏场景的屏幕截图替换关卡按钮图像?

Hil*_*404 7 screenshot uiview sprite-kit swift3

我知道如何拍摄并将截图保存到照片库.我使用下面的代码执行此操作.我想用我的gameScene的屏幕截图替换我的关卡场景按钮图像.说我的图像按钮是150x150.我怎样才能做到这一点?

    func takeScreenShot(scene:SKScene)  {
    let bounds = self.scene!.view?.bounds
    UIGraphicsBeginImageContextWithOptions(/*CGRect(x: 0, y: 0, width: 100, height: 100).size*/bounds!.size, true, UIScreen.main.scale)
    self.scene?.view?.drawHierarchy(in: bounds!, afterScreenUpdates: true)
    let screenshot = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    UIImageWriteToSavedPhotosAlbum(screenshot!, nil, nil, nil)

}


class LevelSelectScene: SKScene {

let button1: SKSpriteNode = SKSpriteNode(imageNamed: "image1")
let button2: SKSpriteNode = SKSpriteNode(imageNamed: "image2")
let button3: SKSpriteNode = SKSpriteNode(imageNamed: "image3")

                    ...

override init(size: CGSize){
super.init(size: size)

button1.position = CGPoint(x: self.frame.width/4, y:  self.frame.height/2)
self.addChild(button1)

button2.position = CGPoint(x: self.frame.width/2, y:  self.frame.height/2)
self.addChild(button2)

button3.position = CGPoint(x: 3*self.frame.width/4, y:  self.frame.height/2)
self.addChild(button3)

}
Run Code Online (Sandbox Code Playgroud)

Ste*_*ves 3

由于UIGraphicsGetImageFromCurrentImageContext返回 a UIImage,并且SKTexture有一个需要 a 的启动器UIImage,并且SKSpriteNode(我假设您用于按钮)有一个需要 anSKTexture和 a 的初始化程序CGSize,我认为您拥有所需的一切:

if let screenshot = UIGraphicsGetImageFromCurrentImageContext() {
   let screenShotTexture = SKTexture(image: screenshot) 
   let button = SKSpriteNode(texture: screenShotTexture, size: CGSize(width: 150, height: 150))
}
Run Code Online (Sandbox Code Playgroud)

使用此功能,您无需将屏幕截图保存到相册(除非您出于其他原因想要这样做)。