2017-01-09 6 views
0

Ich habe versucht, ein Bild des Splash-Screen innerhalb application:didFinishLaunchingWithOptions: mit dem folgenden Code zu erfassen und zu speichern:iOS: Ist es möglich, ein Bild des Begrüßungsbildschirms zu erfassen?

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]; 

Doch leider wird das Bild als transparentes Bild gespeichert. Es ist wahrscheinlich, weil mein UIWindow Objekt nicht das richtige ist. Kann mich bitte irgendjemand dazu bringen, das zu schaffen?

Antwort

0

Warum versuchen Sie nicht den folgenden Code nach dem Festlegen der Storyboard-ID für die LaucnhScreen.storyboard Dateiansicht Controller.

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

Vielen Dank für die Antwort, aber das ist meine Frage nicht beantwortet. Mein Begrüßungsbildschirm basiert auf statischen Bildern und nicht auf einem Storyboard. Ich kann es für das Projekt, an dem ich arbeite, nicht ändern – ishahak

0

Bezüglich der answer Die UIApplicationDelegate hat in der Regel einen Verweis auf das „Hauptfenster“:

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

Danke für die Antwort, aber dieses Fenster hat keinen Zugriff auf den Begrüßungsbildschirm – ishahak

Verwandte Themen