当拍摄背景时拍摄iOS拍摄的快照

问题描述:

每当**iOS**应用程序转到后台时,系统会拍摄快照以将其呈现在多任务切换器中。有没有机会获得这个截图?我知道它对应于上面的窗口,这可能从当拍摄背景时拍摄iOS拍摄的快照

- (void)applicationDidEnterBackground:(UIApplication *)application 

编辑,但结果不是预期,并想知道究竟是iOS的快照。

+0

你想用捕获的屏幕截图做什么?因为我知道你可以忽略iOS采取和使用以下方法'ignoreSnapshotOnNextApplicationLaunch'使用屏幕截图 –

+0

@KetanP我正在显示一个启动画面,并且在某些情况下不会显示启动画面。我想知道那一刻正在做什么截图。 – Matias

+0

您可以使用方法'ignoreSnapshotOnNextApplicationLaunch'链接忽略屏幕快照:https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplication_Class/index.html#//apple_ref/doc/uid/TP40006728- CH3-SW126 –

使用此代码来捕获快照:

#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"); 
+0

Thanks @prince我应该在哪里放置这段代码?在'applicationDidEnterBackground:'结尾处? – Matias

+0

是的,你可以试试它。 –

+0

您可以在UIWindow实例上使用更新的'drawViewHierarchyInRect:afterScreenUpdates:'而不是'renderInContext',并且可能会获得更好的结果! –

App Programming Guide适用于iOS,苹果说:

遮挡/更换敏感信息,你可能也想告诉的iOS 7不采取屏幕快照通过ignoreSnapshotOnNextApplicationLaunch。根据此方法的documentation

希望这会有所帮助。

+0

我确实想要拍摄一张照片,所以我不想隐藏它。 – Matias