You almost have it, but the problem is as explained in the comment above. If you want to capture SKScene
contents, try something like this instead:
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, scale);
[self.view drawViewHierarchyInRect:self.bounds afterScreenUpdates:YES];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
The solution is to basically use the new method drawViewHierarchyInRect:afterScreenUpdates
instead, which is the best we have for now; note, it's not exactly speedy, so doing this in realtime will not be pretty.