Я пишу приложение, и мне нужно изменить представление, если пользователь смотрит на приложение во время разговора по телефону.
Я реализовал следующий метод:
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
NSLog(@"viewWillAppear:");
_sv.frame = CGRectMake(0.0, 0.0, 320.0, self.view.bounds.size.height);
}
Но он не вызывается, когда приложение возвращается на передний план.
Я знаю, что могу реализовать:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(statusBarFrameChanged:) name:UIApplicationDidChangeStatusBarFrameNotification object:nil];
но я не хочу этого делать Я бы предпочел поместить всю информацию о макете в метод viewWillAppear: и позволить этому обрабатывать все возможные сценарии.
Я даже пытался вызвать viewWillAppear: из applicationWillEnterForeground:, но я не могу точно определить, какой контроллер представления является текущим в этой точке.
Кто-нибудь знает правильный способ справиться с этим? Я уверен, что мне не хватает очевидного решения.
isMemberOfClass
или isKindOfClass
, в зависимости от ваших потребностей.
applicationWillEnterForeground:
чтобы определить, когда ваше приложение снова вошло в активное состояние.