Можно ли изменить происхождение фрейма экрана iPhone, как это делается, когда строка состояния отображается или скрыта? - PullRequest
0 голосов
/ 25 октября 2010

Когда UIStatusBar скрыт в приложении, источником всех представлений является (0, 0) верхний левый угол экрана. Однако, когда отображается строка состояния, исходная точка по-прежнему (0, 0), но представления будут перемещаться вниз, чтобы не покрывать строку состояния.

Как это работает? Возможно ли дублировать этот эффект в коде?

По сути, моя конечная цель - скрыть строку состояния и заменить ее на UIView в определенных точках приложения (например, в приложении Google). Но у меня МНОГО просмотров, и я не хочу изменять их размер после скрытия строки состояния.

1 Ответ

2 голосов
/ 25 октября 2010

Вы можете создать контейнерное представление, включающее все ваши "нормальные" представления и везде устанавливать маски авторазмера.Таким образом, сокращение вашего контейнера будет автоматически изменять размер всего остального.Фактически, именно так работают UIViewControllers.Но имейте в виду, что хотя стандартные контроллеры Apple, такие как UINavigationController, знают, как обращаться со строкой состояния, они ничего не знают о том, что вы хотите сделать, поэтому они будут путать чаще, чем нет.

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

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

...