Как определить вращение интерфейса iPad в начале?

У меня возникают проблемы с тем, чтобы приложение для iPad определяло его interfaceOrientation в первом UIViewController, который я инициализировал (в коде). На самом деле, если я отслеживаю application.statusBarOrientation, это тоже возвращает 1 (UIInterfaceOrientationPortrait), даже если я запускаю в альбомной ориентации.

Если я отследю self.interfaceOrientation в своем первом UIViewController, он останется 1, пока не доберется до viewWillDisappear... К сожалению, уже слишком поздно!

Вот некоторый код (хотя там особо и не на что смотреть):

В моем appDelegate у меня есть это:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{    
     // show loading screen first
     [window addSubview:loadingScreenViewController.view];
     [window makeKeyAndVisible];

     NSLog(@"applicationDidBecomeActive:statusBarOrientation = %d", application.statusBarOrientation);
     return YES;
}

который отслеживает 1 (портрет), хотя я ясно вижу, что строка состояния является альбомной... и в первом контроллере представления у меня есть это:

- (void)viewDidLoad
{
    [super viewDidLoad];
     NSLog(@"self.interfaceOrientation = %d", self.interfaceOrientation);
}

который также отслеживает 1 даже в ландшафтном режиме.

Любые идеи? Тут запутался!

Спасибо :)

:-Джо


person jowie    schedule 01.08.2010    source источник
comment
Я создал обходной путь, но он не очень хорош... Я загружаю портретное изображение в viewController по умолчанию, а затем, когда VC получает willRotateToInterfaceOrientation с ландшафтом влево или вправо, он перезаписывает изображение правильным. Поэтому загрузка в альбомной версии происходит медленнее, чем в портретной по умолчанию, что немного неприятно... Могу ли я сделать это более эффективным? Спасибо :)   -  person jowie    schedule 01.08.2010


Ответы (2)


Вот ответ... Отчасти: (с форумов Apple Dev): .... «Приложение всегда загружается так, как если бы устройство было портретным, а затем, если устройство действительно горизонтальное, приложению сообщается, что устройство повернуто . Это сделано для того, чтобы наконечники и код создавали свой пользовательский интерфейс только в одной ориентации. В противном случае может потребоваться два макета пользовательского интерфейса для каждого наконечника». .... это не тот ответ, который мне бы понравился, но, к сожалению, так работает iOS!

person jowie    schedule 04.08.2010

Что сообщает делегат приложения в applicationDidFinishLaunching? Потому что, если он сообщает правильное значение, вы всегда можете получить доступ к делегату, чтобы проверить ориентацию.

person jrtc27    schedule 02.08.2010
comment
К сожалению, приложениеDidFinishLaunching также указывает «Портрет» в начале, даже если оно запускается в альбомной ориентации. - person jowie; 03.08.2010