Интерфейс UIViewControllerОриентация проблемы - PullRequest
1 голос
/ 10 марта 2011

У меня есть Подкласс UIViewController как обычно.Когда я загружаю приложение, мне нужно определить размер некоторых элементов, которые я должен вставить программно.Конечно, размер зависит от ориентации интерфейса: Итак, я сделал:

- (void)viewDidLoad {
  switch( [self interfaceOrientation] ) {
     case UIInterfaceOrientationPortrait:
     case UIInterfaceOrientationPortraitUpsideDown:
          NSLog(@"Portrait");
          break:
     case UIInterfaceOrientationLandscapeLeft:
     case UIInterfaceOrientationLandscapeRight:
          NSLog(@"Landscape");
          break;
  }

Но независимо от ориентации симулятора / устройства, всегда есть Portrait в viewDidLoad / WillAppear, даже если всевращаться правильно.В Plist я добавил все поддерживаемые ориентации.Намеки?

Ответы [ 3 ]

8 голосов
/ 01 апреля 2011

Попробуйте [UIApplication sharedApplication].statusBarOrientation и проверьте UIDeviceOrientationPortrait, UIDeviceOrientationPortraitUpsideDown и т. Д. В вашем коммутаторе, так как [self interfaceOrientation] ненадежен в моем опыте.

0 голосов
/ 13 июня 2014

Я работал с поворотами и ориентациями iOS-приложения.Я обнаружил, что self.interfaceOrientation всегда будет давать правильный результат, если он вызывается в viewDidAppear или после этого.

[UIApplication sharedApplication] .statusBarOrientation следует предпочитать при добавлении представления непосредственно в UIWindow.

Надеюсь, это поможет.

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

1) Убедитесь, что ориентация интерфейса в willAppear возвращает неправильную ориентацию интерфейса.2) попробуйте посмотреть здесь http://developer.apple.com/library/ios/#qa/qa1688/_index.html

3) Убедитесь, что контроллер основного вида является только viewcontroller в окне (в окне только один vc)

...