Вы устанавливаете каждый контроллер вида, чтобы он говорил, что он реагирует на любую возможную ориентацию. Поэтому каждое представление будет пытаться поворачиваться к любой ориентации.
Виды не вращаются автоматически. Обычно вам приходится управлять размещением подпредставления программно во всех, кроме самых простых представлений.
Если у вас нет специального кода ориентации, вы, вероятно, видите, что виды пытаются нарисовать портретное представление в рамке ландшафта или наоборот. Если вы установили autoresize subviews
, ваши подпредставления будут казаться разбросанными по экрану, казалось бы, в случайном порядке. Чем больше вы меняете ориентацию, тем более случайным становится размещение.
Для сложных видов я люблю создавать отдельные пары viewController / view для каждой ориентации. Затем я помещаю взгляды в навигационный контроллер. При изменении ориентации каждый контроллер вида будет выдвигать или вставлять соответствующий контроллер вида для приходящей ориентации в / из стека. Для пользователя это выглядит так, будто одно представление изящно перерисовывается. (Это особенно полезно, если у вас есть нестандартные элементы пользовательского интерфейса, которые нужно поворачивать вручную с помощью преобразований)