在转到后台时捕获iOS拍摄的快照

在转到后台时捕获iOS拍摄的快照,ios,objective-c,uiview,screenshot,multitasking,Ios,Objective C,Uiview,Screenshot,Multitasking,每当一个**iOS**应用程序进入后台时,系统都会对其进行快照,并将其显示在多任务切换器中。是否有机会访问此屏幕截图?我知道它对应于顶部窗口,可以从 - (void)applicationDidEnterBackground:(UIApplication *)application 但结果不是预期的结果,我想知道iOS快照的确切含义。使用以下代码捕获快照: #import <QuartzCore/QuartzCore.h> if ([[UIScreen mainScreen]

每当一个
**iOS**
应用程序进入后台时,系统都会对其进行快照,并将其显示在多任务切换器中。是否有机会访问此屏幕截图?我知道它对应于顶部窗口,可以从

- (void)applicationDidEnterBackground:(UIApplication *)application

但结果不是预期的结果,我想知道iOS快照的确切含义。

使用以下代码捕获快照:

#import <QuartzCore/QuartzCore.h> 


if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)])
    UIGraphicsBeginImageContextWithOptions(self.window.bounds.size, NO, [UIScreen mainScreen].scale);
else
    UIGraphicsBeginImageContext(self.window.bounds.size);

[self.window.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData * imgData = UIImagePNGRepresentation(image);
if(imgData)
    [imgData writeToFile:@"screenshot.png" atomically:YES];
else
    NSLog(@"error while taking screenshot");
#导入
如果([[UIScreen Main Screen]响应选择器:@选择器(比例)])
UIGraphicsBeginImageContextWithOptions(self.window.bounds.size,否,[UIScreen mainScreen].scale);
其他的
UIGraphicsBeginImageContext(self.window.bounds.size);
[self.window.layer renderContext:UIGraphicsGetCurrentContext()];
UIImage*image=UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsSendImageContext();
NSData*imgData=UIImagePngResentation(图像);
if(imgData)
[imgData writeToFile:@“screenshot.png”原子:是];
其他的
NSLog(@“截图时出错”);
苹果在iOS版中说:

隐藏/替换敏感信息时,您可能还希望通过IgnoreSnapshotOnExtApplicationLaunch告诉iOS 7不要拍摄屏幕快照。根据该方法的定义:


希望这会有帮助

谢谢@prince我应该把这个代码放在哪里?在
ApplicationIdentinterBackground:
的末尾,您可以在UIWindow实例上使用更新的
drawViewHierarchyInRect:AfterScreen更新:
,而不是
RenderContext
,可能会得到更好的结果!我得到了
image=nil
两种解决方案@prince@andrewcarte,你在设备或模拟器上测试了吗?你想用捕获的屏幕截图做什么?据我所知,您可以使用以下方法“IgnoreSnappshotOnExtApplicationLaunch”忽略iOS以拍摄和使用屏幕快照@KetanP我正在显示一个启动屏幕,在某些情况下不会显示启动屏幕。我想知道那一刻正在拍摄的屏幕截图是什么。您可以使用ignoreSnapshotOnNextApplicationLaunch方法忽略屏幕截图链接:我确实想拍摄屏幕截图,所以我不想隐藏它。