Как добавить вид наложения в UIWindow, который вращается
-
06-07-2019 - |
Вопрос
У меня есть приложение, которое вращается на некоторых (но не на всех) экранах, и я также хочу добавить UIView в качестве наложения, которое отображается на всех экранах, поэтому я решил добавить его в окно. Теперь проблема в том, что при повороте устройства экраны поворачиваются, а наложение не отображается.
Я также пытался использовать два UIViewController, один для обычного материала, другой для наложения, но у меня не было на это больших надежд, и я был прав. Только один UIViewController будет когда-либо вращаться.
Итак, как мне повернуть оверлей с интерфейсом, надеюсь, без необходимости добавлять код в каждый контроллер представления, который вращается, чтобы вращать оверлей с ним.
Решение
Я думаю, что ваши подозрения верны. Вы должны будете добавить подпредставление к каждому контроллеру представления. Я не знаю почему, но когда вы добавляете несколько представлений в качестве подпредставлений окна, только первое получает его - (BOOL) shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation) interfaceOrientation, вызываемый при каждом изменении ориентации.
Я не пробовал этого, но, кажется, вы могли бы создать единственный родительский контроллер представления, который вы добавили как подпредставление окна, которое будет содержать ваш контроллер навигации, а также ваш оверлейный контроллер представления. Возможно это правильно вызвало бы -shouldAutotrotateToInterfaceOrientation. Опять же, это гипотетически, так как я не пробовал, но я уверен, что это не сработает, просто добавив вид наложения в окно.
С наилучшими пожеланиями,