Скрыть 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

Надеюсь, это поможет!