Строка состояния контроллера представления контейнера iOS 7

#objective-c #ios7 #uitabbarcontroller #statusbar #container-view

#objective-c #ios7 #uitabbarcontroller #Строка состояния #контейнер-просмотр

Вопрос:

У меня проблемы со строкой состояния. У меня есть UIViewController , у этого есть представление контейнера, которое встраивает UITabBarController в него UIViewController .

При включении строки состояния в моем приложении с помощью View controller-based status bar appearance = YES в my Info.plist она работает как обычно, корень UIViewController отображает строку состояния, как вы ожидаете.

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

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

Комментарии:

1. Используете ли вы автоматическое описание и ограничения?

2. Да, это так. Все это сделано в раскадровке.

3. Можете ли вы публиковать фотографии своей раскадровки с помощью tabbarcontroller и его viewcontroller с полностью развернутыми ограничениями с левой стороны?

Ответ №1:

Оказывается topLayoutGuide , это уменьшало мой вид на 20 пикселей для строки состояния. Поскольку он ожидал появления строки состояния, topLayoutGuide он добавляет это пространство в 20 пикселей.

В моей раскадровке самый верхний подраздел моего контроллера представления имел ограничение, чтобы зафиксировать его в верхней части моего представления. Это ограничение было view top равно topLayoutGuide bottom .

Это означало, что при topLayoutGuide добавлении 20-пиксельного пространства весь мой вид был смещен этим.

Изменив ограничение на исправление на topLayoutGuide top вместо, созданное пространство теперь просто находится под моими обычными подвидами, не вызывая никаких проблем.

Ответ №2:

У меня тоже была эта проблема, проблема в том, что любое представление, находящееся в вашем контроллере панели вкладок, имеет ограничение, которое соответствует верхней части контроллера toplayoutguide. Длина верхнего руководства по компоновке для контроллеров вкладок в представлениях контейнера по-прежнему будет равна 20. Одно из решений, которое работает, — это снять это ограничение и сделать так, чтобы представления имели ту же вершину, что и представление родительского контроллера представления, или размер высоты / центра по отношению к контейнеру, чтобы он совпадал с представлением родительского контроллера представления (родительским является контроллер представления на вкладке, а не представлениеконтроллер представления, в который вы встраиваете контроллер панели вкладок).

TabBarController --> RootViewController --> RootVCView --> subview

Сделайте subview.height == to RootVCView.height , и subview.centerY == rootVCView.centerY .

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

Комментарии:

1. Спасибо rvijay007. Хотя ваше решение не соответствовало требованиям, оно привело меня в правильном направлении. Я не подумал о topLayoutGuide . Я оставил свой ответ, все решено, спасибо!

Ответ №3:

Добавьте ограничение «Top Space To:» не с помощью «topLayoutGuide» для вашего представления контейнера, и это устранит проблему