Subview не авторазмер при добавлении в контроллер Root View

У меня есть контроллер корневого представления, который будет иметь до 10 или около того subviews. Я использую autorotation/autosize по всему приложению.

Моя проблема заключается в следующем: - Когда я выделяю все контроллеры представлений и добавляю их как подчиненный в корневой контроллер во время запуска, все работает так, как должно. Единственная проблема заключается в том, что каждому контроллеру представления требуется время для инициализации. Это заставляет мое приложение загружаться очень медленно.

  • Вместо этого я пытаюсь выделить контроллеры представления так, как они нужны. Теперь я нахожу, что если приложение переходит в "Ландшафт", и я выделяю контроллер вида, который спроектирован в портрете, он будет авторотировать, но авторазбор не произойдет.

  • Другими словами, как только subview добавляется в корневой контроллер в портретном режиме, он вращается и правилен (и остается таким образом). Если subview добавляется, когда корневой контроллер находится в ландшафтном режиме, он вращается, но не выполняет автоматизацию (и размеры просмотра остаются испорченными, вращающимися назад к портрету).

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

  • Я что-то пропустил? Любая помощь будет оценена по достоинству. Мой проект - это порт iPad из приложения iPhone, приложение iPhone не вращается, поэтому я не уверен, что это может быть что-то не так с бета-версией 3.2.

Ответ 1

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

-

(void) AdjustFrame{
 UIDeviceOrientation interfaceOrientation = [[UIDevice currentDevice] orientation];
 if((interfaceOrientation == UIInterfaceOrientationLandscapeLeft)||(interfaceOrientation == UIInterfaceOrientationLandscapeRight))
 {
  CGRect applicationFrame = [[UIScreen mainScreen] applicationFrame];
  CGRect newFrame =  CGRectMake(0.0, 0.0, applicationFrame.size.height, applicationFrame.size.width);
  [self.view setFrame:newFrame];
  [self.view setNeedsDisplay];


 }   
}