Чтобы получить текущий вид, отображаемый, когда пользователь создает фоновое изображение для вашего приложения, используйте метод applicationDidEnterBackground
вашего AppDelegate.
- (void)applicationDidEnterBackground:(UIApplication *)application
{
// Get current view...
// (get from UITabbarController or whatever logic you like)
// For this code sample, just grab first UIView under the main window
UIView *myView = [self.window.subviews objectAtIndex:0];
}
Чтобы изменить вид перед его отображением, используйте метод applicationWillEnterForeground
AppDelegate, напримерэто:
- (void)applicationWillEnterForeground:(UIApplication *)application
{
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(50, 50, 80, 80)];
label.backgroundColor = [UIColor whiteColor];
label.text = @"yo";
[self.myLastView addSubview:label];
}
Я понимаю, что вы упомянули applicationWillEnterForeground в вашем вопросе.Можете ли вы быть более конкретными с тем, что вы пытаетесь сделать, или, возможно, включить код? Я на самом деле пробовал код выше и обновление представления (я вижу метку "yo"
над моим видом) .
Последнее мое предложение - попробовать позвонить [view setNeedsDisplay]
и [view setNeedsLayout]
, которые должны заставить UIView перерисовывать себя. (примечание - проблема не в том, что изменения в uiview не отображаются, проблема в том, что они показываютпосле отображения старого представления. Похоже, что снимок экрана сделан перед приостановкой приложения, и этот снимок экрана первоначально отображается после возобновления работы приложения для повышения производительности)
Редактировать
Приведенный выше код является хорошимпример того, что видит пользователь.Ярлык "yo"
отображается, но только после восстановления представления.Я посмотрю, смогу ли я это исправить и сделать репост.
Редактировать 2
Похоже, возобновление приостановленного приложения показывает захваченный снимок экрана с последним известным состоянием приложения.Я пытался найти документы на этот счет, но я не могу его найти.
Альтернативное решение 1
Закройте приложение, когда пользователь нажмет кнопку «Домой».
Если вы сохраняете состояние вашего приложения в applicationWillResignActive:
или applicationWillTerminate:
, вы можете просто восстановить это состояние (перейдите к правильной вкладке, в которой пользователь последний раз был), а в appDidFinishLaunchingWithOptions:
вы можете обновить пользовательский интерфейспрежде чем пользователь увидит это.Чтобы завершить работу приложения, когда оно было фоновым (приостановлено), введите ключ «Приложение не работает в фоновом режиме» - необработанный ключ: UIApplicationExitsOnSuspend в ДА .
Это гарантирует, что пользователь увидит ваше приложение в том виде, в котором он настроил его в настройках, и не увидит, как оно выглядело раньше.Извините, я не мог найти лучший способ сделать это.: (
Альтернативное решение 2
Отображение ваших настроек внутри приложения.
Очевидно, что это потребует изменения дизайна, однако все больше и больше приложений отображают настройки внутри приложения.Популярная сторонняя библиотека - В наборе параметров приложения . Это позволяет настраивать параметры с помощью файла связки / plist точно так же, как и для глобальных настроек приложения. Он также выглядит и ведет себя так же, какглобальные настройки. Это даст вам полный контроль над любым поведением, которое вы хотите внутри вашего приложения.