iPad не распознает правильную ориентацию интерфейса при запуске?

У меня есть приложение, которое можно запустить в портретном или ландшафтном режиме. Элементы управления на главном экране выглядят по-разному в зависимости от того, в каком режиме находится приложение.

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

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

Какой правильный способ справиться с этим?

РЕДАКТИРОВАТЬ: в viewDidLoad и ViewWillAppear, я называю это:

orientation = [self getOrientation];
if (orientation == OrientationsLandscape) {
    NSLog(@"Landscape");
}
else {
    NSLog(@"Portrait");
}

вот реализация [getOrientation]

 - (int) getOrientation {
    int currentOrientation = [UIApplication sharedApplication].statusBarOrientation;
    if (UIInterfaceOrientationIsPortrait(currentOrientation)) return OrientationsPortrait;
    else return OrientationsLandscape;
}

и перечисление def:

typedef enum {
     OrientationsLandscape = 0,
     OrientationsPortrait
} Orientations;

Теперь, если устройство находится в альбомном режиме, и я пытаюсь установить мое приложение, мне будет дважды напечатано "Портрет", вместо "Пейзаж".

2 ответа

Попробуй это:

[UIApplication sharedApplication].statusBarOrientation

Также важно убедиться, что вы правильно установили autoresizingMask свойство всех ваших элементов пользовательского интерфейса. Во-вторых, когда у меня возникла эта проблема, я исправил ее в методе init. В инициализации вы должны контролировать ориентацию iPad, как предлагает SVGreg, и затем установить правильный фрейм для ваших элементов пользовательского интерфейса.

Другие вопросы по тегам