当拍摄背景时拍摄iOS拍摄的快照
每当**iOS**
应用程序转到后台时,系统会拍摄快照以将其呈现在多任务切换器中。有没有机会获得这个截图?我知道它对应于上面的窗口,这可能从当拍摄背景时拍摄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");
Thanks @prince我应该在哪里放置这段代码?在'applicationDidEnterBackground:'结尾处? – Matias
是的,你可以试试它。 –
您可以在UIWindow实例上使用更新的'drawViewHierarchyInRect:afterScreenUpdates:'而不是'renderInContext',并且可能会获得更好的结果! –
在App Programming Guide适用于iOS,苹果说:
遮挡/更换敏感信息,你可能也想告诉的iOS 7不采取屏幕快照通过ignoreSnapshotOnNextApplicationLaunch。根据此方法的documentation:
希望这会有所帮助。
我确实想要拍摄一张照片,所以我不想隐藏它。 – Matias
你想用捕获的屏幕截图做什么?因为我知道你可以忽略iOS采取和使用以下方法'ignoreSnapshotOnNextApplicationLaunch'使用屏幕截图 –
@KetanP我正在显示一个启动画面,并且在某些情况下不会显示启动画面。我想知道那一刻正在做什么截图。 – Matias
您可以使用方法'ignoreSnapshotOnNextApplicationLaunch'链接忽略屏幕快照:https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplication_Class/index.html#//apple_ref/doc/uid/TP40006728- CH3-SW126 –