当我试图以编程方式在Swift中截取我的应用的屏幕截图时,为什么屏幕截图只显示为白色?

时间:2015-10-24 08:38:35

标签: ios swift camera screenshot

在我的应用程序中,我有一个视图,其中包含一个摄像头。我想截取这个拿着相机的视图的截图。但是,当我使用以下代码执行此操作时:

let layer = UIApplication.sharedApplication().keyWindow!.layer
let scale = UIScreen.mainScreen().scale
UIGraphicsBeginImageContextWithOptions(layer.frame.size, false, scale);

layer.renderInContext(UIGraphicsGetCurrentContext()!)
let screenshot = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()

UIImageWriteToSavedPhotosAlbum(screenshot, nil, nil, nil)

保存到照片的屏幕截图只是空白,并不显示相机视图。

1 个答案:

答案 0 :(得分:2)

Render and capture UIView名为view

UIGraphicsBeginImageContextWithOptions(view.frame.size, false, 0.0)
view.drawViewHierarchyInRect(view.frame, afterScreenUpdates: true)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext();

请记住,UIWindow也是一种观点。 您可以使用此功能在模拟器中测试保存到桌面:

public func saveImageToDesktop(image : UIImage, name : String)
{
    let basePath = NSString(string: "~/Desktop").stringByExpandingTildeInPath
    let path = "\(basePath)/\(name).png"
    UIImagePNGRepresentation(image)?.writeToFile(path, atomically: true)
}