Запретить отображение заставки после возвращения с фона - PullRequest
12 голосов
/ 16 ноября 2011


Я заметил, что происходит в каждом приложении, которое я разрабатываю. Обычно это не проблема, но в этом конкретном приложении было бы замечательно, если бы я мог «исправить» это, даже если это ошибка.

Действия по повторному созданию проблемы:

  • Запустите приложение, заставка показывается ок. 3 секунды и приложение запускается.
  • Нажмите кнопку «Домой», приложение перейдет в фоновый режим.
  • Верните приложение из фона (дважды щелкнув по главному экрану и выбрав его), покажите всплеск примерно на полсекунды, а затем приложение вернется обратно.

Можно ли избавиться от всплывающего экрана на полсекунды на обратном пути из фона? Это действительно проблема для этого конкретного приложения.

Ответы [ 5 ]

12 голосов
/ 29 ноября 2012

Я знаю, что этот вопрос помечен как «отвеченный», но реальность такова, что ответ был неправильным в моем случае, и я хочу поделиться.

Изначально я пришел к выводу, что самый точный ответ выше был от QueyJoh - «это то, что обрабатывается iOS ... Краткий ответ: это не в ваших руках».

Однако после экспериментов мне удалось обнаружить проблему как записи в моем файле info.plist, управляющем строкой состояния. В частности, у меня были записи для "UIStatusBarHidden" и "UIStatusBarStyle".

Удаление этих записей из моего plist-файла немедленно привело к тому, что мое приложение не отображало заставку при переключении из моего приложения и обратно.

Проблема решена.

Мэтью

10 голосов
/ 16 ноября 2011

Ну, очевидно, этот вопрос не был очень умным для начала :) Эта «проблема» происходит только в симуляторе. При отладке на самом устройстве оно работает как положено.

Никакого вреда не причинено. Спасибо всем, кто пытался помочь! :)

9 голосов
/ 12 июля 2012

По моему опыту, это то, что обрабатывается iOS (я собираюсь с опытом, потому что я не видел никакой документации по этому поводу).Если ОС сможет быстро и быстро восстановить состояние приложения, она покажет скриншот своего предыдущего состояния, пока это состояние восстанавливается.

Однако, если что-то задержит процесс, например, приложение не будет впока фон должным образом (например, при быстром переключении задач), или если что-то предсказуемое задержит запуск, то он вернется к экрану-заставке (вместо скриншота), чтобы упростить работу пользователя.

Shortответ: это не в ваших руках.

0 голосов
/ 14 октября 2013

У меня тоже есть эта проблема, теперь я должен был ее решить. Причина в том, что вы сделали слишком много вещей в applicationDidEnterBackground, попробуйте уменьшить.

0 голосов
/ 16 ноября 2011

Ваш код для отображения вашего заставки должен быть в вашем appdelegate в методе didFinishLaunchingWithOptions. Если это так, то оно появляется только тогда, когда ваше приложение действительно запускается, а не когда оно возвращается из фона.

Используйте что-то вроде этого (я знаю, что он использует старый код анимации, но я уверен, что вы можете обновить его на блоки, если вам нужно) ...

    splashView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 20, 320, 460)];
    splashView.image = [UIImage imageNamed:@"Default.png"];

    [myWindow addSubview:splashView];
    [myWindow bringSubviewToFront:splashView];
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.5];
    [UIView setAnimationDelegate:self]; 
    [UIView setAnimationDidStopSelector:@selector(startupAnimationDone:finished:context:)];
    splashView.alpha = 0.0;
    [UIView commitAnimations];

, а затем создайте метод startupAnimationDone ...

- (void)startupAnimationDone:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {

    [splashView removeFromSuperview];

    [splashView release];
}
...