UIView, чтобы покрыть статус iPhone / панель оператора - PullRequest
1 голос
/ 06 октября 2010

Я пытаюсь создать UIView (и связанный UIViewController), который имитирует поведение UIAlertView. Учитывая мои требования, казалось, что гораздо проще создать собственную реализацию с нуля, чем пытаться создать подкласс и изменить UIAlertView. Для этого я получаю ссылку на делегат приложения, а затем добавляю UIViewController.view (с альфа-каналом около 0,6) в качестве подпредставления основного окна приложения. Это означает, что он будет отображаться поверх всех других видов на экране и эмулирует затемненный фон, найденный в UIAlertView.

Все работает хорошо, за исключением того, что UIView (т.е. UIViewController.view) не покрывает строку состояния / несущей в верхней части экрана. Это означает, что весь экран затемнен, кроме полосы несущей, которая выглядит немного странно! Есть ли способ заставить UIView появиться на верхней части панели оператора? Я слышал размышления о добавлении второго UIWindow в приложение, но это не представляется целесообразным (поскольку в документации Apple говорится, что в приложении должен быть только один UIWindow), и даже если это лучшее решение Я не уверен в технической реализации такого решения.

1 Ответ

1 голос
/ 06 октября 2010

Чтобы скрыть строку состояния, не пряча ее, вам нужно, чтобы что-то было над строкой состояния, а поскольку строка состояния отображается в другом окне, вам нужно использовать второе окно с UIWindowLevelStatusBar.

Я сделал такую ​​вещь, она работает, но это похоже на хак, благодаря документам Apple или их отсутствию.Вы создаете второе окно, как обычно.Чтобы скрыть это, вы должны установить его скрытое свойство и освободить его.Чтобы убедиться, что вы не пропускаете окна, я рекомендую создать подкласс UIWindow для отладки ради и переопределить его dealloc для включения NSLog.Кроме того, посмотрите на свойство windows UIApplication, оно должно правильно отражать закрытие окна.

Самая большая боль в тылу - это изменение ориентации устройства.

...