2014-01-04 3 views
7

Когда я убиваю приложение для iPhone и перезапускаю его, у меня есть изображение предыдущего состояния приложения вместо изображения запуска. Как я могу заставить iOS всегда показывать изображение запуска?Приложение для запуска приложения iOS после убийства

+0

Вы в любое время можете наблюдать за запуском изображения? – kkocabiyik

+0

Да. Изображение запуска появляется в первом запуске, но после убийства и повторного запуска не происходит. – DataZombies

+0

Проверяете ли вы его в режиме отладки или развертываете на устройстве и отключаясь от компьютера? – kkocabiyik

ответ

7

Чтобы заставить iOS запустить приложение со своим изображением по умолчанию, вызовите [[UIApplication sharedApplication] ignoreSnapshotOnNextApplicationLaunch];, где вы реализуете сохранение состояния.

От documentation:

Когда ваше приложение возобновлен, система отображает этот снимок изображение вместо запуска по умолчанию изображения вашего приложения, чтобы сохранить представление, что ваше приложение было все еще работает. Если вы считаете, что моментальный снимок не может правильно отразить пользовательский интерфейс вашего приложения, когда ваше приложение перезагружено, вы можете вызвать этот метод, чтобы предотвратить удаление этого снимка моментального снимка . Если вы делаете , UIKit вместо этого использует исходное изображение приложения по умолчанию.

Также посмотрите на this question для более подробной информации.

+1

hurmmm ... Я положил [приложение ignoreSnapshotOnNextApplicationLaunch]; в моем приложенииWillResignActive и applicationWillTerminate. Не работает. – DataZombies

+0

ignoreSnapshotOnNextApplicationLaunch не работает – Zaraki

5

ignoreSnapshotOnNextApplicationLaunch метод не будет вызываться, если приложение не вызывается во время восстановления состояния.

Если ваше приложение НЕ поддерживает функцию многозадачности, в которой ключ UIApplicationExitsOnSuspend в Info.plist установлен в YES. Предлагаемое решение не будет работать.

Для меня, я использовал код ниже:

applicationWillResignActive используется для ситуации, когда приложение работает, вы дважды нажмите на кнопку домой, чтобы вызвать многозадачности лоток. Экран заставки отобразится на экране приложения. Он работает отлично.

applicationWillTerminate не работает каждый раз, потому что функция не может быть не вызываются на некоторых этапах

- (void)applicationWillResignActive:(UIApplication *)application { 

    NSLog(@"Application Did Resign Active"); 
    self.viewController.webView.hidden = YES; 

    NSString *splashImage; 
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 
     splashImage = @"Default-Portrait~ipad.png"; 
    } 
    else { 
     splashImage = @"Default~iphone.png"; 
    } 

    UIImageView *splash = [[UIImageView alloc]initWithFrame:[self.window frame]]; 
    [splash setImage:[UIImage imageNamed:splashImage]]; 
    [self.window addSubview:splash]; 

} 

- (void)applicationWillTerminate:(UIApplication *)application { 

    NSLog(@"Application is Terminated"); 
    self.viewController.webView.hidden = YES; 

    NSString *splashImage; 
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 
     splashImage = @"Default-Portrait~ipad.png"; 
    } 
    else { 
     splashImage = @"Default~iphone.png"; 
    } 

    UIImageView *splash = [[UIImageView alloc]initWithFrame:[self.window frame]]; 
    [splash setImage:[UIImage imageNamed:splashImage]]; 
    [self.window addSubview:splash]; 

} 
+0

Если ваше приложение не работает в фоновом режиме, то завершение вызова не будет называться – CarmeloS

1
Please follow this - 
-(void)applicationWillResignActive:(UIApplication *)application 
{ 
    imageView = [[UIImageView alloc]initWithFrame:[self.window frame]]; 
    [imageView setImage:[UIImage imageNamed:@"Portrait(768x1024).png"]]; 
    [self.window addSubview:imageView]; 
} 

Here to remove your imageview: 
- (void)applicationDidBecomeActive:(UIApplication *)application 
{ 
    if(imageView != nil) { 
     [imageView removeFromSuperview]; 
     imageView = nil; 
    } 
} 
It is working and tested many times. 
+0

Это будет работать, но оно также изменит моментальный снимок при использовании многозадачного списка в iOS 7, что не предлагается. – CarmeloS

-1

Для моего текущего проекта я хотел, чтобы заставить повторный запуск после того, как приложение будет убито. Я добавил это PLIST в приложении:

Application does not run in background

Застраховать заставка была правильной, я использовал предложения выше:

- (void)applicationWillResignActive:(UIApplication *)application { 
[[UIApplication sharedApplication] ignoreSnapshotOnNextApplicationLaunch]; } 

и

- (void)applicationDidEnterBackground:(UIApplication *)application { 
[[UIApplication sharedApplication] ignoreSnapshotOnNextApplicationLaunch]; } 

Это работает хорошо ,

Смежные вопросы