TL; DR: Документы iOS не согласны с Info.plist
о том, какая ориентация (ландшафт влево или вправо) имеет кнопку home с какой стороны.Я что-то пропустил?(Например, существует различие между ориентацией, в которой код думает , в которой он находится, и ориентацией, в которой устройство знает, , в которой оно находится. См. Следующую за последней точку маркера, отмеченную ❓ниже.)
Документ для UIDeviceOrientation
говорит
Однако, когда я использую Общиефлажок в Xcode, файл Info.plist
говорит о напротив :
Приведенная выше информация достаточно ясно представляет противоречие.У меня вопрос: я что-то упустил или я должен просто принять это за длительную затею в 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