iOS Пейзаж Левый против Правого против Неверный - PullRequest
2 голосов
/ 13 марта 2019

TL; DR: Документы iOS не согласны с Info.plist о том, какая ориентация (ландшафт влево или вправо) имеет кнопку home с какой стороны.Я что-то пропустил?(Например, существует различие между ориентацией, в которой код думает , в которой он находится, и ориентацией, в которой устройство знает, , в которой оно находится. См. Следующую за последней точку маркера, отмеченную ❓ниже.)

Документ для UIDeviceOrientation говорит

screenshot from docs

Однако, когда я использую Общиефлажок в Xcode, файл Info.plist говорит о напротив :

screenshots from Xcode

Приведенная выше информация достаточно ясно представляет противоречие.У меня вопрос: я что-то упустил или я должен просто принять это за длительную затею в toolchain / docs / API?


Что на самом деле происходит при запуске приложенияСимулятор или устройства, спросите вы?Ниже приводится подмножество данных, которые я собрал.Для удобства чтения я выделил термины ВЛЕВО и ВПРАВО.Ваш мозг все еще может взорваться.

Есть три значения для отслеживания:

  • Что говорят Xcode / plist
  • Что говорят пункты меню Симулятора [или какая ориентация устройства - это ]
  • Что говорит API UIDevice.current.orientation.

Когда флажок General установлен onlyly to "Пейзаж ЛЕВЫЙ ":

  • В файле Info.plist написано" Пейзаж (ЛЕВАЯ кнопка домой) "[т.е. не согласен с документацией]
  • Симулятор запускает
    • с изображением экрана вверх-вверх [т.е. правильно]
    • с установленным пунктом «Аппаратное обеспечение> Ориентация» «Пейзаж ПРАВО» [т.е. не согласен с Xcode / plist]
    • с кнопкой «Домой» на ВЛЕВО [т.е. отношение между пунктом меню и местоположением домашней кнопки соответствует документам]
  • UIDevice.current.orientation == .landscapeRIGHT [то есть не соответствует Xcode, но соответствует меню симулятора]
  • Выбор пункта меню Оборудование> Ориентация> Пейзаж ВЛЕВО
    • переворачивает изображение экрана вверх ногами [правильное поведениеили: нет автоповорота изображения]
    • ставит кнопку «домой» в ПРАВО [конечно]
    • UIDevice.current.orientation == .landscapeLEFT [в соответствии с документами / вопреки Xcode / plist]
  • Запуск iPhone с кнопкой «Домой» на ВЛЕВО:
    • правильно отображает изображение на экране
    • UIDevice.current.orientation == .landscapeRIGHT [соответствует документам / противоречит Xcode / plist]
  • Поворот телефона на 180 °
    • ставит кнопку «Домой» в ПРАВО [конечно]
    • UIDevice.current.orientation == .landscapeRIGHT [т.е. это соответствует тому, что приложение думает происходит, не с физической ориентацией устройства]
  • iPad ведет себя так же, как iPhone
...