UIView в iOS 5 с использованием раскадровки не меняет содержимое при повороте устройства iPad

Я только начинаю работать с раскадровками и iOS 5.1. Приложение, которое я создаю, использует навигационный контроллер в качестве корневого контроллера и предназначено для использования в альбомной ориентации (это внутреннее корпоративное приложение).

Я создал одно представление, которое работало правильно: содержимое правильно вращается, чтобы оставаться «правильной стороной вверх», когда симулятор меняет ориентацию.

Затем я добавил новое представление, и оно не вообще вращается; содержимое остается в портретной ориентации (и, следовательно, сбоку), когда устройство вращается.

Я просмотрел настройки для двух UIViewControllers и UIViews и не вижу никакой разницы между ними. Любые мысли о том, где я должен искать?


person Christophe    schedule 31.05.2012    source источник


Ответы (2)


Прежде всего, каждый UIViewController в раскадровке должен иметь связанный с ним класс. Создайте новый класс, который наследуется от UIViewController, а затем в раскадровке щелкните uiviewcontroller, а в нижней части этого контроллера щелкните правое поле и в инспекторе классов замените UIViewController именем нового созданного вами класса. .

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

-(BOOL)shouldAutoRotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return YES;
}

Просто заставьте этот метод удаления возвращать YES в КАЖДОМ контроллере представления, чтобы убедиться, что все их представления вращаются в любой ориентации. Вы сделали это?

person ChrisBorg    schedule 31.05.2012
comment
Не могу поверить, что забыл об этом; слишком ослеплен горячностью Раскадровки... Спасибо! - person Christophe; 31.05.2012
comment
Технически вам не обязательно иметь подкласс контроллера представления для каждой сцены, но обычно это так. - person Jon Hess; 31.05.2012
comment
Обратите внимание: если вы используете Xcode 4.5, но выполняете развертывание в iOS 5.x, этот метод больше не будет автоматически генерироваться в подклассах UIViewController (поскольку он устарел в iOS 6.x), поэтому вам придется добавить его вручную. чтобы все работало под iOS 5.1. - person David Hunt; 09.10.2012

Это беспокоило и меня. Мое приложение вращалось в симуляторе iPad, но не на реальном iPad. Достаточно странно. У меня был UITabBarController с тремя вкладками. Все три контроллера, подключенные к панели вкладок, имели метод shouldAutoRotateToInterfaceOrientation, но только два из них (5 шагов позже при просмотре навигационного контроллера) не имели. Я также добавил метод к ним, и теперь он вращается.

Только мои 2 цента.

person Surpher    schedule 01.10.2012