2017-01-09 17 views
0

我試圖捕捉和使用下面的代碼保存裏面application:didFinishLaunchingWithOptions:閃屏的圖像:iOS:是否可以捕獲閃屏的圖像?

UIWindow *w = [[[UIApplication sharedApplication] windows] firstObject]; 

UIGraphicsBeginImageContext(w.bounds.size); 
[w.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *img = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

NSString *applicationDocumentsDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
time_t unixTime = (time_t) [[NSDate date] timeIntervalSince1970]; 
NSString *storePath = [NSString stringWithFormat:@"%@/%ld.png", applicationDocumentsDir, unixTime]; 
[UIImagePNGRepresentation(img) writeToFile:storePath atomically:YES]; 

然而不幸的是,圖像保存爲透明圖像。這可能是因爲我的對象不是正確的。任何人都可以指導我成功嗎?

回答

0

爲什麼不在設置LaucnhScreen.storyboard文件視圖控制器的Storyboard ID之後嘗試下面的代碼。

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"LaunchScreen" 
                  bundle: nil]; 

    UIViewController *controller = (UIViewController*)[mainStoryboard 
                 instantiateViewControllerWithIdentifier: @"Launch"]; 
    UIGraphicsBeginImageContext(w.bounds.size); 
    [controller.view.layer renderInContext:UIGraphicsGetCurrentContext()]; 
    UIImage *img = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    NSString *applicationDocumentsDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
    time_t unixTime = (time_t) [[NSDate date] timeIntervalSince1970]; 
    NSString *storePath = [NSString stringWithFormat:@"%@/%ld.png", applicationDocumentsDir, unixTime]; 
    [UIImagePNGRepresentation(img) writeToFile:storePath atomically:YES]; 
+0

感謝您的答覆,但是這並沒有回答我的問題。我的啓動畫面基於靜態圖像,而不是基於故事板。我無法爲我正在處理的項目更改它 – ishahak

0

關於answer 的UIApplicationDelegate通常有「主窗口」的引用:

[[[UIApplication sharedApplication] delegate] window]; 
+0

感謝您的回答,但此窗口無法訪問啓動畫面 – ishahak

相關問題