ориентация на запуск iPad - PullRequest
2 голосов
/ 18 мая 2010

Прочитав много постов, я так и не понял, как решить эту проблему ...

Первый вид моего приложения - это tableViewController. Я переопределяю

(BOOL) shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation)interfaceOrientation 

и всегда возвращает YES.

Если я держу свой iPad в вертикальном положении в горизонтальной ориентации, он вращается сразу после запуска приложения. Однако, если я положу свой iPad на стол, несмотря на то, что моя домашняя страница находится в альбомной ориентации, он запускается в горизонтальной ориентации.

Итак, я думаю, проблема в том, как я могу получить ориентацию моей домашней страницы и запустить мое приложение с такой ориентацией?

Ответы [ 4 ]

1 голос
/ 14 июля 2010

Мое приложение - openGL, но я решил использовать уведомления:

// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return YES;
}

// This is called right BEFORE the view is about to rotate. Here I'm using a notification message
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {

    if (UIInterfaceOrientationIsPortrait(toInterfaceOrientation)) {
        NSNotification* notification = [NSNotification notificationWithName:@"orientationIsPortrait" object:self];
        [[NSNotificationCenter defaultCenter] postNotification:notification];
    }
    else {
        NSNotification* notification = [NSNotification notificationWithName:@"orientationIsLandscape" object:self];
        [[NSNotificationCenter defaultCenter] postNotification:notification];
    }

}

willRotateToInterfaceOrientation вызывается вправо, ДО того, как оно фактически начнет вращать ориентацию.

Затем в моем EAGLView initWithFrame: я установил наблюдателей ..

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(viewBecamePortrait:) name:@"orientationIsPortrait" object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(viewBecameLandscape:) name:@"orientationIsLandscape" object:nil];

и в viewBecamePortrait и viewBecameLandscape я обрабатываю изменения программно.

1 голос
/ 03 июля 2010

У меня была такая же проблема. Есть некоторые интересные вещи, которые происходят с первым контроллером представления, который вы добавляете в окно, и независимо от его ориентации. Убедитесь, что все контроллеры вида возвращают YES для ориентации, если вы хотите, чтобы самый первый из них открывался с правильной ориентацией

0 голосов
/ 28 декабря 2010

Я использовал ориентацию строки состояния, чтобы ориентировать свой openglview, например:

UIDeviceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;       
NSLog(@"%s: orientation: %i", _cmd, (int)orientation); 
0 голосов
/ 26 ноября 2010

При запуске приложения willRotateToInterfaceOrientation используется только в том случае, если «Домашний» экран находится в ландшафтном режиме.Таким образом, мы можем определить ориентацию, когда устройство находится «лицом вверх» или «лицом вниз».[UIDevice currentDevice]. Ориентация работает в случае, если устройство не параллельно земле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...