Скрыть UITabBar?
В моем приложении у меня есть панель вкладок. И в некоторых представлениях у меня также есть панель инструментов. Поэтому, когда я прихожу к этим представлениям с помощью панели инструментов, он выглядит уродливым - два столбца внизу представления. Я подумал, что было бы лучшим решением скрыть панель вкладок при вводе этих конкретных представлений.
Но я просто не мог понять, как это сделать правильно. Я попытался установить UITabBarController tabBar скрытое свойство в YES, но это не сработало. И я также старался сделать следующее в том, что я вижу:
self.hidesBottomBarWhenPushed = YES;
Но это не сработало.
Какое правильное решение этой ситуации? Я не хочу иметь 2 бара при любом просмотре.
Спасибо.
Ответы
Ответ 1
Вам нужно использовать свойство hidesBottomBarWhenPushed для YES на контроллере, который вы нажимаете, а НЕ - в UITabBarController.
otherController.hidesBottomBarWhenPushed = YES;
[navigationController pushViewController: otherController animated: TRUE];
Или вы можете установить свойство при первой инициализации контроллера, который хотите нажать.
Ответ 2
Не используйте это решение!
BOOL hiddenTabBar;
UITabBarController *tabBarController;
- (void) hideTabBar {
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.4];
for(UIView *view in tabBarController.view.subviews)
{
CGRect _rect = view.frame;
if([view isKindOfClass:[UITabBar class]])
{
if (hiddenTabBar) {
_rect.origin.y = [[UIScreen mainScreen] bounds].size.height-49;
[view setFrame:_rect];
} else {
_rect.origin.y = [[UIScreen mainScreen] bounds].size.height;
[view setFrame:_rect];
}
} else {
if (hiddenTabBar) {
_rect.size.height = [[UIScreen mainScreen] bounds].size.height-49;
[view setFrame:_rect];
} else {
_rect.size.height = [[UIScreen mainScreen] bounds].size.height;
[view setFrame:_rect];
}
}
}
[UIView commitAnimations];
hiddenTabBar = !hiddenTabBar;
}
Источник
Ответ 3
Конструктор интерфейса имеет флажок для контроллера просмотра, встроенного в панель вкладок. Скрывает нижнюю панель при нажатии. В простых случаях не нужно делать это через код.
Для @Micah
![Hide bottom bar on push.]()
Ответ 4
Я слишком долго боролся с этим. Скрытие панели вкладок - один шаг в правильном направлении, но оставляет черный прямоугольник позади. Хитрость заключается в изменении размера слоя, который поддерживает представление UIViewController.
Я написал небольшую демонстрацию здесь с решением:
https://github.com/tciuro/FullScreenWithTabBar
Надеюсь, это поможет!