htjohn htjohn - 2 months ago 13
Swift Question

How to take screen shot programmatically (Swift, SpriteKit)

I tried what ever was suggested but the output was a white,blank screenshot. Which leads me to assume that I haven't added anything to the view. Here's how I'm adding graphics to my view. The addChild method comes with the SpriteKit and it takes in SKSpriteNodes:

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


Here's the method that takes the screenshot:

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


Any suggestions would be helpful

Answer

I think this question could be merged with this one Screenshotting on Iphone in swift only has a white background

which seems the same

EDIT:

I think I found a solution. First read this post: How Do I Take a Screen Shot of a UIView?

I create an Extensions.swift file in which I 'extended' the methods of a UIView using that link.

After that I simply connect the following to my sprite-kit button

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

VoilĂ , the image is in the camera roll!

Comments