Я разрабатываю приложение для iOS, которое позволяет кому-то играть в одну из двух разных игр.
Обе игры состоят из нескольких раундов. Когда игрок заканчивает раунд, приложение переходит к новой сцене, которая отображает результаты, а затем переходит либо к другой сцене раунда, либо к сцене финальной игры.
Из-за временного характера сцен в приложении нет особого смысла сохранять сцены, как это делается в более традиционных приложениях, где кто-то может вернуться к предыдущей сцене.
С этой целью в большинстве случаев навигация по сценам осуществляется с помощью UINavigationViewController
и простого вызова setViewControllers(animated:)
, предоставляющего массив, содержащий только UIViewController
для следующей сцены, и это работает достаточно хорошо.
Я упомянул, что приложение позволит кому-то играть в одну из двух игр. Оказывается, на iPhone в одну игру лучше всего играть в портретном режиме, а в другую лучше всего играть в ландшафтном режиме. Я хочу иметь возможность контролировать, какая ориентация пользовательского интерфейса используется для конкретного UIViewController
, когда он становится активным.
Я экспериментировал с использованием свойства supportedInterfaceOrientations
для UINavigationController
и application(_ application: supportedInterfaceOrientationsFor window:)
для UIApplicationDelegate
и смог заставить все работать для стандартного приложения. Однако, когда я пытаюсь применить что-то к тому, как работает мое игровое приложение, используя setViewControllers(animated:)
, никакие методы, относящиеся к применению желаемой ориентации пользовательского интерфейса, похоже, не вызываются, и все сцены отображаются с одной и той же ориентацией.
Какие предложения есть у людей о том, как я могу заставить сцену в моем приложении отображаться с определенной ориентацией пользовательского интерфейса?