#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» для вашего представления контейнера, и это устранит проблему