В iOS 7 мы сказали:
// ViewController1:
-(NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskLandscape;
}
-(BOOL)shouldAutorotate {
return YES;
}
// ViewController2, presented by modal segue from button in ViewController1
-(NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}
-(BOOL)shouldAutorotate {
return YES;
}
В результате оказалось, что приложение появилось в ландшафтном представлении контроллера 1 и в портрете в виде контроллера 2.
Этот код отлично работает в iOS 7, включая симуляторы iOS 7 в Xcode 6. Но он больше не работает в iOS 8. Есть две проблемы:
-
Вид View Controller 1 отображается в ландшафте, но симулятор не поворачивается автоматически (может быть, просто ошибка симулятора) и (это действительно важная часть), изображение не изменяется автоматически, поэтому оно слишком узкий для экрана (там есть большая черная область справа).
-
Вид контроллера 2 выглядит в той же ориентации, что и просмотр контроллера 1 (пейзаж, а не портрет).
Таким образом, представления диспетчера просмотра не изменяются автоматически, чтобы заполнить экран, а поддерживаемые ориентации контроллера просмотра не выполняются.
Итак, как мы должны это делать сейчас? Это связано с коллекциями признаков? С предпочтительным размером контента? С настройкой ориентации строки состояния вручную?