Преимущества, проблемы, примеры добавления другого UIWindow в приложение iOS?

Недавно мне стало интересно, что приложение iOS имеет только один UIWindow . Кажется, что это не проблема для создания другого UIWindow и размещения его на экране.

Мой вопрос нечеткий, но меня интересует:

  • Что я могу достичь с помощью второго UIWindow который не может быть выполнен другими способами?
  • Что может испортиться при использовании нескольких экземпляров UIWindow ?
  • Я видел, что люди используют второй UIWindow чтобы отображать popover как виды на iPhone. Это хороший способ сделать это? Зачем? Почему нет?
  • Существуют ли другие примеры, когда совершенно необходимо иметь еще один UIWindow ?

Дело не в том, что я что-то пропускаю. Я никогда не чувствовал необходимости создавать еще один экземпляр UIWindow но, возможно, это позволит делать потрясающие вещи, о которых я не знаю! 🙂

Я надеюсь, что это может помочь мне решить эту проблему: мне нужно добавить «обложку» над тем, что в данный момент отображается. Он также должен работать, если уже есть один или несколько модальных controllerов. Если я добавлю UIView в представление корневого controllerа, модальные controllerы будут сидеть сверху, так же как и controllerы popover. Если я представляю вид крышки по-модулю, и уже есть модальный controller, покрывается только часть экрана.

UIWindow может плавать над другими элементами интерфейса, такими как системная клавиатура.

Чтобы обратиться к вашему последнему абзацу: Создайте UIWindow с тем же фреймом, что и ваше главное окно. Установите windowLevel свойства windowLevel значение UIWindowLevelStatusBar . Установите для hidden свойства значение NO .

Начиная с ответа Роба я немного поиграл и хотел бы записать несколько заметок для других, пытающихся получить информацию по этой теме:

  • Совсем не проблема добавить еще один UIWindow . Просто создайте один и makeKeyAndVisible . Готово.
  • Удалите его, сделав еще одно окно видимым, затем отпустите тот, который вам больше не нужен.
  • Окно, которое является «ключом», получает весь ввод клавиатуры.
  • UIWindow охватывает все, даже модалы, popovers и т. Д. Блестящий!
  • UIWindow всегда является портретом неявно. Он не вращается. Вам нужно будет добавить controller в качестве корневого controllerа нового windows и разрешить его rotation. (Как и в главном окне)
  • Уровень windows определяет, как «высокий» он отображается. Установите его в UIWindowLevelStatusBar чтобы он покрыл все. Установите для hidden свойства значение НЕТ.
  • Второй UIWindow можно использовать, чтобы отображать на экране, которые плавают поверх всего. Не создавая фиктивный controller, чтобы встроить его в UIPopoverController .
  • Это может быть особенно полезно на iPhone, где нет controllerа popover, но где вы можете подражать чему-то подобному.
  • И да, она решила, конечно, мою проблему: если приложение уходит в отставку, добавьте окно обложки поверх того, что в настоящее время отображается, чтобы запретить iOS делать снимок экрана текущего содержимого вашего приложения.
  • Сколько стоит разработка приложения для iPhone?
  • iTunes Connect API
  • Процедура отправки сообщений iOS 6 Facebook заканчивается ошибкой «remote_app_id не соответствует сохраненному id»
  • Использование аутентификации AFNetworking и HTTP
  • Создайте случайную буквенно-цифровую строку в Cocoa
  • Только два закругленных угла?
  • Как использовать NSTimer?
  • NSMutableArray addObject не работает
  • Использование MPMediaItems с AVAudioPlayer
  • NSOperation на iPhone
  • Добавление изображений в UITextView
  • Interesting Posts

    Звездочка: вперед, если сверстник недоступен

    Используйте String.split () с несколькими разделителями

    Ноутбук Samsung NP530 не может войти в настройку BIOS

    Как применить OrderBy в IQueryable, используя имя столбца строки в универсальном методе расширения?

    Могу ли я объединить 8-гигабайтный чип с 4-гигабайтным чипом и по-прежнему получать двойное соединение?

    Добавление и удаление пользователей из групп Active Directory в .NET.

    Как выйти из Node.js

    Windows 7 второй монитор выключается после запроса UAC

    Как настроить автозаполнение jquery-ui в Rails

    Вызвать функцию, названную в строковой переменной в C

    Использование команд в ярлыке

    В чем разница между sscanf или atoi, чтобы преобразовать строку в целое число?

    Как сериализовать статические элементы данных classа Java?

    Как синхронизировать файловую систему между двумя Mac?

    «Взаимозависимость» (DI) «дружественная» библиотека

    Давайте будем гением компьютера.