Перезагрузить поддерживаемые ориентации интерфейса в iOS

Рассмотрим UIViewController, который поддерживает различные ориентации интерфейса в зависимости от его состояния, которое может меняться в зависимости от ввода пользователя.

AFAIK, supportedInterfaceOrientations вызывается только при изменении ориентации устройства. Есть ли способ сообщить приложению, что ему нужно еще раз спросить о поддерживаемых ориентациях интерфейса, даже если ориентация устройства не изменилась?


person hpique    schedule 30.11.2012    source источник


Ответы (1)


Вы правы. По сути, вы можете только реагировать на изменение ориентации, но не форсировать его. Но есть трюк, который вы можете использовать, чтобы обмануть приложение, чтобы оно проходило через все обратные вызовы ориентации.

У вас должен быть ViewController, который вы создали в начале своего приложения и установили как rootViewController окна. Удалите представление этого ViewController из его суперпредставления (которое является окном) и сразу же снова добавьте его в качестве подпредставления в окно. Поскольку вся видимая иерархия представления только что изменилась, приложение снова пройдет через все обратные вызовы ориентации.

Но я бы не стал слишком полагаться на это на вашем месте, хотя это и логично, никогда не знаешь, когда Apple может это изменить. Теперь, когда я думаю об этом, я еще не тестировал это в iOS 6. Он работает на iOS 4 и 5.

person David    schedule 02.12.2012