2015-08-02 2 views
1

У меня есть игра, в которой я хочу играть только в ландшафтном режиме. Это хорошо для iPhone, но не для iPad. Я думал, что смогу обойти это, выпустив 2 версии того же приложения, один для iPhone и один для iPad. Однако, посмотрев дальше, я обнаружил, что iPhone-приложение должно быть iPad готовым? Я видел этот ответ, что позволяет предположить, что можно заблокировать ориентацию приложения IPad:блокировка iPad для ландшафтной ориентации

Lock Ipad App in Landscape mode

Является ли это все еще возможно в более поздних версиях Xcode и быстро, и если да, то как ??

ответ

1

Вот что вы можете сделать. в методе viewDidLoad в каждом классе ViewController вставьте этот код.

if UIDevice.currentDevice().userInterfaceIdiom == .Pad { 

      // this code will be executed if the device is an iPad 
      override func supportedInterfaceOrientations() -> Int { 
       return UIInterfaceOrientation.LandscapeLeft.rawValue 
     } 

      override func shouldAutorotate() -> Bool { 
        return false 
      } 

    } 

Что будет следующая

  1. Функция viewDidLoad выполняется и если оператор оценивается
  2. условие для если утверждение верно, так что операторы внутри блока должны быть выполненный
  3. Первая функция переопределения будет устанавливать ориентацию на пейзаж. Вы можете изменить, что landscaperight
  4. Вторая функция заблокирует функциональность Rotation ориентации

ПРИМЕЧАНИЕ: Я предпочитаю, чтобы встраивать все контроллеры просматривать внутри навигационного контроллера и связывание этой навигации контроллера к классу затем написания код, который я дал вам в методе viewDidLoad этого класса. Это позволит сделать конфигурацию для всех взглядов внутри этой навигации контроллера, а не вводить их в каждом классе

+0

Спасибо за совет :) – JGrn84

+0

Просто добавил это мой код, и все представления фиксируются в ландшафте отлично, за исключением launchScreen .xib. Как мне получить доступ к контроллеру представления для этого? Кроме того, когда игра начинается, она не настроена на пейзаж в первой сцене, пока я не перейду на следующую сцену, НО, если я вернусь на эту сцену, не закрывая симулятор, она будет установлена ​​в альбомную. – JGrn84

+0

Я не знаю о launchscreen.xib, но для настройки пейзажа, как только запуск игры использует метод viewWillLoad вместо viewWillLoad. Скажите, пожалуйста, если он работает –

0

я верю, это может быть сделано в соответствии с информацией развертывания в голубой файл в верхней части файла навигатора в Xcode

2

Если вам нужно заблокировать ориентацию для всех экранов, а для iPhone и iPad, вы можете легко достичь того же самого в Xcode.

Перейдите в Цели> Общие> Информация о развертывании и выберите требуемую ориентацию устройства. Проверьте скриншот. enter image description here

Таким образом, вы не будете иметь никаких проблем с Launch Image

+0

Информация о развертывании работает для iPhone, но не iPad, ориентация iPad обычно не может быть заблокирована. – JGrn84

+0

@kellclx вы уверены? позвольте мне снова проверить и вернуться к нему – Jasmeet

+0

См. мой комментарий выше, информация о развертывании работает, когда p.list изменен, чтобы удалить параметры портрета, которые остаются в «поддерживаемых ориентациях интерфейса», которые остаются, даже если вы изменяете информацию о развертывании. Спасибо за вашу помощь :) Я нашел информацию о p.list здесь: https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/StrategiesforHandlingAppStateTransitions/StrategiesforHandlingAppStateTransitions.html#//apple_ref/doc/uid/TP40007072-CH8-SW1 – JGrn84

Смежные вопросы