Мое приложение запускается с корневым контроллером представления. Его работа заключается в отображении заставки, пока приложение не будет готово. Заставка находится в отдельном контроллере вида (splashVC
). Когда приложение готово, appDelegate вызывает существующий метод в корневом контроллере представления. Отсюда корневой контроллер представления добавляет другой контроллер представления (mainVC
) в качестве дочернего, а затем переходит на новый контроллер с
[splashVC willMoveToParentViewController:nil];
[self transitionFromViewController:splashVC
toViewController:mainVC
duration:0.5
options:UIViewAnimationOptionTransitionCrossDissolve
animations:^{
[self.view addSubview:mainVC.view];
[splashVC.view removeFromSuperview];
}
completion:^(BOOL finished) {
[splashVC removeFromParentViewController];
}];
Моя проблема в том, что если я запускаю приложение в альбомном режиме, то вижу загрузку Default.png, за которой следует мой заставка, которая автоматически поворачивается в альбомную ориентацию. Это все имеет смысл. Но затем, когда на экране появляется mainVC
, его вид кажется застрявшим в книжной ориентации - вид не расширяется до правой границы экрана. Контроллер корневого представления автоматически изменяет размеры - я добавил к нему цвет фона, чтобы видеть, что mainVC
не полностью покрывает его. Я думал, что это может быть потому, что mainVC
не был ребенком, когда произошла ротация. Поэтому я добавил mainVC
в метод loadView контроллера корневого представления, в который был добавлен splashVC
. Я просто пытаюсь выяснить, почему, когда отображается mainVC
, это не автоматическое изменение размера. Если я добавлю метод -
willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
тогда я вижу, что вращение происходит до загрузки mainVC
, так как это никогда не вызывается в mainVC. Я не хочу взломать изменение размера представления. Любая помощь в том, как справиться с этим, была бы великолепна. Возможно, мне что-то не хватает в моем контейнере, но я использую методы addChildViewController и didMoveToParentViewController для добавления моих контроллеров представления в качестве дочерних к корневому контроллеру представления.
РЕДАКТИРОВАТЬ - Я заметил, что в методе initVithNibNamed ... в mainVC значение self.interfaceOrientation - книжное, а в методе viewDidLoad - альбомное. Я не уверен, есть ли хороший способ, которым я могу объяснить это. Кажется, что вращение произошло во время загрузки пера.
Заранее спасибо.