Как мы определяем ориентацию приложения в 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, если физически удерживать устройство в альбомной ориентации слева.

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

  • Как получить URL-адрес ALAsset из PHAsset?
  • Как получить консоль устройства в Xcode6?
  • Проверьте, включены ли локальные уведомления в IOS 8
  • Класс размера для iPad-портрета и ландшафтных режимов
  • Как отобразить индикатор активности с текстом на iOS 8 с помощью Swift?
  • Какова точка входа быстрого выполнения кода?
  • Каталог документов Путь к бета-симулятору iOS 8
  • Как интегрировать заставку для всех типов iPhone в XCode 6.1?
  • iOS 8 Снимок снимка, который не был отображен, приводит к созданию пустого моментального снимка
  • Меню боковой панели слайдов IOS 8 Swift
  • создание пользовательских ячеек таблицы в быстрых
  • Interesting Posts

    Преобразование LocalDate в LocalDateTime или java.sql.Timestamp

    Значение buffer_size в Dataset.map, Dataset.prefetch и Dataset.shuffle

    Когда закодировать пробел до плюс (+) или% 20?

    Использование пустого столбца в качестве разделителя в JTable

    Инициализация SSLContext

    Maven – как включить пустые каталоги

    Ошибка: главный метод не найден в classе Calculate, пожалуйста, определите основной метод как: public static void main (String args)

    Как сделать точки одним цветом, когда третий столбец равен нулю, а другой цвет – в Gnuplot?

    Как использовать java.util.Scanner, чтобы правильно читать данные пользователя из System.in и действовать на него?

    Захват Node JS альтернатива многопоточности

    Сделать Firefox автоматически задавать уровень масштабирования для новых веб-страниц

    7-Zip CMD: Добавить текущую дату в архив и включить только последнюю измененную папку в архиве

    Изображение и развертывание новых компьютеров

    Возможно ли использовать ярлык Google Chrome с другим пользовательским агентом, чем существующее окно Chrome?

    Как просмотреть настройки конфигурации из Symfony2 config.yml?

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