Проблемы с поворотом экрана на iPad OpenGL (панель многозадачности и всплывающие окна не вращаются) - PullRequest
0 голосов
/ 18 марта 2011

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

OpenGL обрабатывает поворот приложения с использованием матриц преобразования. Это все работает отлично. Изображения по умолчанию также отображаются с правильным поворотом.

Панель многозадачности, однако, не вращается, как следует. Он появляется на той стороне, где было открыто приложение. Поэтому, если я открою приложение, дважды нажмите кнопку «Домой», чтобы перейти на правильную сторону, но после поворота устройства оно останется на той же стороне, пока приложение не будет закрыто и снова открыто. При обнаружении этого бара приложение OpenGL вращается в соответствии с положением бара.

Диалоговые окна, такие как всплывающее окно «Войти в игровой центр», также вращаются неправильно. Кажется, они появляются в стандартной портретной ориентации.

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

1 Ответ

0 голосов
/ 19 марта 2011

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

У меня есть основной класс, который контролирует большую часть моего приложения. Он уже был зарегистрирован для получения уведомлений о повороте устройства, например:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:@"UIDeviceOrientationDidChangeNotification" object:nil];

Я добавил несколько строк в функцию обработчика ориентации, чтобы вручную установить расположение строки состояния:

- (void) updateOrientation {
    if ([[UIDevice currentDevice] orientation] < 5 && [[UIDevice currentDevice] orientation]>0) {
        orientation = [[UIDevice currentDevice] orientation];
        [UIApplication sharedApplication].statusBarOrientation = orientation;
    }
}

Условное ограничение позволяет обработчику реагировать только на альбомную и портретную ориентации, а не вверх и вниз.

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

...