Как мы определяем ориентацию приложения в iOS 8?

В 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; } 

В результате приложение появилось в ландшафтном представлении controllerа 1 и в портрете в виде controllerа 2.

Этот код отлично работает в iOS 7, включая iOS 7-симуляторы в Xcode 6. Но он больше не работает в iOS 8. Есть две проблемы:

  • View View Controller 1 выглядит в ландшафте, но симулятор не поворачивается автоматически (может быть, это просто симуляторная ошибка) и (это действительно важная часть), вид не изменяется автоматически, поэтому он слишком узкий для экрана ( с правой стороны есть большая черная область).

  • Вид controllerа 2 выглядит в той же ориентации, что и просмотр controllerа 1 (пейзаж, а не портрет).

Таким образом, просмотр представлений controllerа не изменяется автоматически для заполнения экрана, а поддерживаемые ориентации controllerа просмотра не выполняются.

Итак, как мы должны это делать сейчас? Это связано с коллекциями признаков? С предпочтительным размером контента? С настройкой ориентации строки состояния вручную?

Ответ на часть первая (запуск в ландшафт) не изменился с iOS 7: все зависит от порядка возможных ориентаций в файле Info.plist. Итак, предположим, что View Controller 1 говорит следующее:

 -(NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskLandscape; } 

Затем мы будем последовательно внедряться в ландшафт, если ориентация ландшафта ориентирована на ориентированные на Info.plist ориентации интерфейса:

 UISupportedInterfaceOrientations  UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait  

Одно примечательное изменение в iOS 8 состоит в том, что по умолчанию строка состояния скрыта, когда мы находимся в ландшафте. Но вы можете предотвратить это, при желании, с соответствующим переопределением:

 -(BOOL)prefersStatusBarHidden { return NO; } 

Это не отвечает на вторую часть моего вопроса, а именно, как заставить rotation при представлении controllerа вида. Как я объяснил в этом ответе , я считаю, что это станет невозможным в iOS 8. Ожидается, что ваш controller просмотра и ваши взгляды будут «адаптироваться» – и вы тоже.

EDIT: Похоже, что в семени 4 возможность принудительного поворота приложения на представлении / увольнении диспетчера представлений возвращается!

Вероятно, проблема в вашем файле * .plist

Проверьте, что вы хотите, чтобы указать ориентацию по умолчанию / первый запуск для экрана, как

Поддерживаемые интерфейсные интерфейсы:

item 0 Пейзаж (правая кнопка дома)

Элемент 1 Портрет (нижняя кнопка дома)

Эта «ошибка» я преследовал за несколько дней до того, как я, наконец, проверил работу UIInterface в глобальном поиске в Xcode и заметил, что у меня были ориентиры, которые моя игра не поддерживает (вся игра – 100%

Я избавился от Landscape Left, который стал причиной запуска GameCenter в альбомный альбом Left Left, если физически удерживать устройство в альбомной ориентации слева.

Задача решена.

  • Возможно ли сделать расширение Array в Swift, которое ограничено одним classом?
  • Как получить URL-адрес ALAsset из PHAsset?
  • Ошибка UIActivityViewController на iOS 8 iPads
  • Проверьте, включены ли локальные уведомления в IOS 8
  • Пользовательская клавиатура iOS 8: изменение высоты
  • Черные полосы появляются в приложении при настройке iOS7.1 или 7.0 в Xcode6
  • Изменение строки состояния Цвет для конкретных ViewControllers с использованием Swift в iOS8
  • filterArrayUsingPredicate не существует в быстром массиве
  • Меню боковой панели слайдов IOS 8 Swift
  • iOS8 - ограничения двусмысленно указывают на высоту нуля
  • Как проверить «Разрешить полный доступ» в iOS 8?
  • Interesting Posts

    С «N» нет узлов, сколько различных двоичных и двоичных поисковых деревьев возможно?

    Обновите Android SDK Tool до 22.0.4 (последняя версия) с 22.0.1

    Как подключить телевизор с поддержкой DLNA к ПК?

    Есть ли способ сделать скриншот с использованием Java и сохранить его на каком-то изображении?

    Проверка подлинности Google

    Гибридное завершение работы в Windows 8

    Можно ли написать собственный текст в Google Maps API v3?

    Вход для учетной записи администратора Windows 7

    свойство навигации должно быть виртуальным – не требуется в ef core?

    Как я могу использовать файлы .xcconfig в Xcode 4?

    Угловой 2 – Ng Для использования чисел вместо коллекций

    неизвестная ошибка: Chrome не удалось запустить: анонимно вышел (информация о драйвере: chromedriver = 2.9

    Mysql выбирает, где не в таблице

    Зачем отмечать локальные переменные и параметры метода как «final» в Java?

    Android Spinner: избегать onItemВыбранные вызовы во время инициализации

    Давайте будем гением компьютера.