Мне нужно изменить фоновое изображение изображения в зависимости от ориентации. Для этого я использую statusBarOrientation подход в viewWillAppear
:Неверное значение для статусаBarOrientation on viewWillAppear
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
UIInterfaceOrientation currentOrientation = [[UIApplication sharedApplication] statusBarOrientation];
if (UIInterfaceOrientationIsPortrait(currentOrientation)) {
NSLog(@"PORTRAIT");
} else if (UIInterfaceOrientationIsLandscape(currentOrientation)) {
NSLog(@"LANDSCAPE");
}
}
Проблема заключается в том, что консоль всегда показывает ПОРТРЕТ, даже когда IPad проводится в ландшафтном режиме. Тот же код в viewDidAppear
работает правильно, но есть слишком поздно, и пользователь может видеть смену изображений. Это заставляет меня думать, что правильное состояние statusBarOrientation по-прежнему недоступно в viewWillAppear
, но я прочитал в некоторых других вопросах, что этот код должен работать там.
Что еще более странно в том, что в viewWillTransitionToSize: вы можете запросить ориентацию, и если вы дважды повернете телефон (вернитесь в его позицию viewDidLoad), statusBarOrientation вернет вам правильный ответ. Хотя он дал другой ответ в viewDidLoad, и теперь устройство находится в той же ориентации, что и тогда! –