【发布时间】:2019-04-23 19:35:35
【问题描述】:
我无法使用按钮和以下代码截取应用程序的屏幕截图:
func takeAScreenshot() {
var screenshotImage :UIImage?
let layer = UIApplication.shared.keyWindow!.layer
let scale = UIScreen.main.scale
UIGraphicsBeginImageContextWithOptions(layer.frame.size, false, scale);
let context = UIGraphicsGetCurrentContext()
layer.render(in:context!)
screenshotImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
if let image = screenshotImage, true {
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil)
}
}
每个屏幕截图都是空白的。 我尝试了几个在其他 stackOverflow Questions 上找到的代码示例,但每次都是空白或黑色屏幕截图。
【问题讨论】:
-
UIGraphicsGetImageFromCurrentImageContext只会捕获 UIKit 上下文,不会捕获 Cocoa2D/SpriteBuilder 上下文! -
根据文档,您应该使用CCRenderTexture 从您的视图中获取图像。
-
我确实有一个照片库描述并添加到我的 Info.plist 中。保存的照片是空白的
-
SpriteBuilder基于Cocos2D,本身基于OpenGL。所以你应该参考这些问题:capturing screenshot using opengl returns black screen、Why is glReadPixels() failing to get GL image、How to get UIImage from EAGLView?
标签: swift screenshot spritebuilder