Как установить начальную ориентацию для приложения iPad на основе UISplitViewCOntroller - PullRequest
1 голос
/ 22 апреля 2010

У меня нормально работает приложение с разделенным видом на iPad. Используются настройки по умолчанию (Popover in Portrait, табличное представление слева в альбомной ориентации). Представления корректно меняются после запуска приложения. Проблема, которую я вижу, состоит в том, что, когда приложение запускается (в симуляторе) и работает в ландшафтном режиме, парадигма пользовательского интерфейса - это та, которая предназначена для портретного режима (основной список - это поповер), который загружается.

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

Ответы [ 4 ]

2 голосов
/ 22 июня 2010

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

Просто проверьте ориентацию интерфейса и, если он горизонтальный, переключите ширину и высоту рамки приложения (т. Е. Ширина становится высотой, высота становится шириной).

CGRect frame = [[UIScreen mainScreen] applicationFrame];

switch(controller.interfaceOrientation){
    case UIInterfaceOrientationPortrait:
    case UIInterfaceOrientationPortraitUpsideDown:
      [controller.view setFrame:frame];
      break;
    case UIInterfaceOrientationLandscapeLeft:
    case UIInterfaceOrientationLandscapeRight:
      [controller.view setFrame:CGRectMake(frame.origin.x, frame.origin.y, frame.size.height, frame.size.width)];
      break;
}
0 голосов
/ 28 августа 2012

Это не работает правильно, потому что контроллер подробного представления по умолчанию UISplitViewController - просто простой UIViewController. Метод mustRotate UIViewController возвращает YES только для портретного режима.

Добавление универсального UIViewController, возвращающего YES в mustRotate для всех ориентаций, решило проблему для меня.

0 голосов
/ 07 июля 2010

Мне удалось отобразить представление загрузки, выполнив

[window addSubview:self._splitViewController.view];
[window addSubview:self._myLoadingView];
self._splitViewController.view.hidden = YES;
[window makeKeyAndVisible];
[self loadAllDatas];
self._splitViewController.view.hidden = NO;

у меня отлично работает

0 голосов
/ 28 апреля 2010

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

Я решил это. Я ждал загрузки и анализа внешнего XML-потока. В результате я загружал окно с представлением splitViewController ПОСЛЕ моего applicationDidFinishLaunching метода.

Добавление:

[window addSubview: splitViewController.view]; 
[window makeKeyAndVisible]; 

обратно в этот метод исправлено распознавание ориентации

...