2013-04-15 1 views
1

Короче говоря, я пытаюсь изменить мой IOS приложение rootViewController на applicationWillEnterForeground:, например, так:Изменения RootViewController в applicaitonWillEnterForeground

- (void)applicationWillEnterForeground:(UIApplication *)application 
{ 
    MyViewController *controller = [[MyViewController alloc] init]; 
    self.window.rootViewController = controller; 
} 

Однако, когда IOS выполняет «наезд» анимация, которая выполняется, когда приложение перемещается из фона на передний план, оно все еще показывает предыдущий вид rootViewController. Затем, как только анимация будет завершена, приложение выведет на экран новый вид rootViewController.

Один из способов решить эту проблему, чтобы просто перенести этот код - (void)applicationDidEnterBackground:, но проблема с этим решением является то, что в моем приложении, нет никакого способа узнать, если новый rootViewController будет назначен до - (void)applicationWillEnterForeground:(UIApplication *)application (она основана по прошествии времени с момента выхода из приложения).

Как я могу заставить приложение перерисовывать до того, как iOS выполнит анимацию, взяв приложение из фона на передний план?

ответ

1

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

Такого поведение частично документирован в Moving to the Background section Руководстве по программированию IOS приложений:

приложение может использовать свой метод applicationDidEnterBackground: подготовить для перехода к фоновому состоянию. При перемещении на задний план все приложения должны выполнять следующие действия:

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

Apple, не явно указать, что вы не можете изменить или заменить этот снимок на более позднее время, но ни они говорят обратное в любом месте, я не знаю.

+0

Это то, чего я определенно боялся ... Я буду отмечать это как ответ, если вы можете либо предоставить ссылку, либо я не найду другого решения. – MikeS

+0

Я отредактировал свой ответ со ссылкой на документацию. –

+0

К моему разочарованию это кажется правдой. iOS 7: возможность настроить изображение запуска прямо перед запуском? :) – MikeS