我找到了 this code :
func screenShotMethod() {
//Create the UIImage
UIGraphicsBeginImageContext(view.frame.size)
view.layer.renderInContext(UIGraphicsGetCurrentContext())
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
//Save it to the camera roll
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil)
}
我需要做什么才能将导航栏等所有其他元素添加到屏幕截图中?
最佳答案
与其直接抛出答案,不如让我解释一下您当前代码的作用以及如何修改它以捕获全屏。
UIGraphicsBeginImageContext(view.frame.size)
这行代码创建了一个与view
大小相同的新图像上下文。这里要注意的是,新的图像上下文与view
的大小相同。除非您想捕获应用程序的低分辨率(非视网膜)版本,否则您应该改用 UIGraphicsBeginImageContextWithOptions
。然后您可以传递 0.0
以获得与设备主屏幕相同的比例因子。
view.layer.renderInContext(UIGraphicsGetCurrentContext())
这行代码会将 View 的层渲染到当前图形上下文(这是您刚刚创建的上下文)中。这里要注意的是,只有 view
(及其 subview )被绘制到图像上下文中。
let image = UIGraphicsGetImageFromCurrentImageContext()
这行代码根据绘制到图形上下文中的内容创建了一个 UIImage 对象。
UIGraphicsEndImageContext()
这行代码结束图像上下文。它正在清理(您创建了上下文,也应该将其删除。
结果是一个与 view
大小相同的图像,其中包含 view
及其 subview 。
如果您想将所有内容都绘制到图像中,那么您应该创建一个与屏幕大小相同的图像,并将屏幕上的所有内容都绘制到其中。实际上,您可能只是在谈论应用程序“关键窗口”中的所有内容。由于 UIWindow
是 UIView
的子类,因此它也可以绘制到图像上下文中。
关于ios - 如何在 Swift 中截取全屏屏幕截图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25448879/