У меня есть контроллер просмотра и отдельные файлы nib для портрета и пейзажа. При вращении я загружаю соответствующий наконечник. Методы
shouldAutorotateToInterfaceOrientation and willRotateToInterfaceOrientation
вызывается, а nib изменяется.
Проблема:
the landscape nib does not appear as landscape, but portrait! The status bar is
correctly rotated and appears on the top:
(Sorry, couldn't paste the image, because my account is new. The screenshot is in
landscape, with a landscape status bar, but a landscape view shown as portrait.)
Можно подумать, что проблема заключается в том, что вы не устанавливаете ориентацию как ландшафт в IB. Имитированные показатели для представления, но я это сделал, и представление выглядит как ландшафт в IB. (Я не думаю, что было бы возможно создать такую вращающуюся кнопку, если бы представление было портретом.) Помимо этих двух перьев у меня есть mainwindow.xib, который содержит делегат приложения, окно и просмотреть объекты контроллера.
EDIT: Я понял, что взгляды на самом деле вращаются, когда они должны "не спать". Это похоже на дополнительную трансформацию. Когда я поворачиваю телефон на 90 ° вправо, пейзаж xib отображается повернутым на 90 ° вправо. Когда я поворачиваю телефон на 90 ° вправо, изображение xib отображается вверх ногами. Строка состояния всегда отображается правильно вверху.
EDIT2: Использование
self.view.transform = CGAffineTransformMakeRotation((M_PI * (90) / 180.0));
in willRotateToInterfaceOrientation Я могу повернуть вид влево (и любой ориентации), поэтому я могу использовать это как обходной путь. Однако у меня есть другие проекты, в которых представление автоматически поворачивается и не требует использования CGAffineTransformMakeRotation. Это как-то предотвращает автоматическое вращение здесь.