2016-01-21 523 views
0

每當**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 –

回答

0

使用此代碼來捕獲快照:

#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',並且可能會獲得更好的結果! –

0

App Programming Guide適用於iOS,蘋果說:

遮擋/更換敏感信息,你可能也想告訴的iOS 7不採取屏幕快照通過ignoreSnapshotOnNextApplicationLaunch。根據此方法的documentation

希望這會有所幫助。

+0

我確實想要拍攝一張照片,所以我不想隱藏它。 – Matias