截图在iPhone上的iPhone只有一个白色的背景

一些背景:我只是试图做一个简单的程序使用Xcode 6testing版7迅速截图的iPhone后,我按下button。 这是在SpiteKit和游戏场景中完成的。 背景是一个随机的PNG图像和“你好世界”默认示例文本。 我以编程方式在gamescene didMoveToView函数中使用以下代码放置一个按下button(默认飞船图像是button):

button.setScale(0.2) screen.frame = CGRect(origin: CGPointMake(self.size.width/4, self.size.height/1.5), size: button.size) screen.setImage(playAgainButton, forState: UIControlState.Normal) screen.addTarget(self, action: "action:", forControlEvents: UIControlEvents.TouchUpInside) self.view!.addSubview(screen) 

这将我的按下button,在它链接到一个function的屏幕上,使用下面的代码截图:

 func action(sender:UIButton!){ UIGraphicsBeginImageContext(self.view!.bounds.size) self.view!.layer.renderInContext(UIGraphicsGetCurrentContext()) let screenshot = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() UIImageWriteToSavedPhotosAlbum(screenshot, nil, nil, nil) } 

所以这个代码是截图的,但是当我查看照片的时候,只能显示按下button,其余的图像是白色的。 图像如下所示:

截图

下面,我认为屏幕截图应该看起来像这样,因为这是模拟器中的屏幕(我只是用一些随机的图像/文本作为背景):

在这里输入图像说明

有人可以向我解释为什么截图程序不是也拍摄背景图片,以及如何解决?

我在网上查找,我还没有看到任何问题是解决我的问题。 在线我看到了一些类似的问题,并尝试了他们的修复:我import了quartzCore,coreGraphics和coreImages,但没有修复。 另外,我尝试使用ViewController,并设置一个UIbutton与一个IBaction屏幕截图,但仍然得到相同的白色背景图像。 我已经尝试了不同的背景图像,结果相同。

我是相当新的编程,所以,任何帮助将不胜感激! 先谢谢你!

你有没有将背景设置为图案背景颜色? =>也许这不符合预期与renderInContext

背景图像在self.view呈现,无论是作为子视图还是在其drawRect:方法? =>如果没有,当然它不会被渲染。

获取屏幕截图的最简单方法是使用该function

 UIImage *_UICreateScreenUIImage(); 

你必须首先声明它,因为它是一个无证的函数。 我不确定苹果是否会接受一个包含此function的应用程序,但我认为这样会好的(我知道评论准则说你不能使用无证的function,但我认为他们不会在乎这种情况。)它是可用的,在iOS 5 – iOS 8(我已经testing过,不关心iOS 4)。

另一件也应该工作的是渲染整个屏幕,而不是一个特定的视图:

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

(请注意,我将view!换成了view!.window!来获得唯一的窗口实例。)