Как программно скрыть UITabBarController?

Можно ли с помощью анимации скрыть?


person RAGOpoR    schedule 13.02.2010    source источник
comment
Я предлагаю варианты предлагаемых ниже решений: stackoverflow.com/questions/4031804/   -  person juggler    schedule 06.04.2013


Ответы (4)


UITabBar наследуется от UIView, поэтому вы можете скрыть его и анимировать, как в стандартном UIView.

- (void) hideTheTabBarWithAnimation:(BOOL) withAnimation {
    if (NO == withAnimation) {
        [theTabBar setHidden:YES];
    } else {
        [UIView beginAnimations:nil context:nil];
        [UIView setAnimationDelegate:nil];
        [UIView setAnimationDuration:0.75];

        [theTabBar setAlpha:0.0];       

        [UIView commitAnimations];
    }
}
person Guillaume    schedule 13.02.2010
comment
Спасибо за совет, Гийом - person RAGOpoR; 13.02.2010
comment
Хотя я сам не тестировал это, я считаю, что это просто скроет представление, но все равно сохранит его рамку (следовательно, этот скрытый кадр будет препятствовать новым представлениям). Лучше использовать свойство hidesBottomBarWhenPasted в vc, которое будет отправлено - person Ege Akpinar; 06.02.2013
comment
Лучший ответ для меня. Я действительно очень счастлив. Так что мы должны управлять другим. Вы решили мою проблему за секунду. Большое спасибо :) - person Nirmalsinh; 05.09.2013

Вам следует использовать этот код:

self.tabBarController.tabBar.hidden=YES;
person Pratik Patel    schedule 12.06.2012
comment
Это оставляет для меня черное пространство вместо панели вкладок ... Не лучшее решение - person Flupp; 06.08.2016

Вы также можете скрыть это с помощью инспектора атрибутов:

введите описание изображения здесь

но не с анимацией.

person hanumanDev    schedule 09.11.2012
comment
Это просто и идеально - person Jay Mayu; 17.12.2013

Другое решение, которое я использую: методы вызова, когда вы хотите скрыть меню:

//Show Tab Bar
[self showTabBar:self.tabBarController];
//If You Want to Hide/Show Navigation Bar Also
[self.navigationController setNavigationBarHidden: NO animated:YES];

//Hide Tab Bar
[self hideTabBar:self.tabBarController];  
//If You Want to Hide/Show Navigation Bar Also
[self.navigationController setNavigationBarHidden: YES animated:YES];

Методы:

- (void)hideTabBar:(UITabBarController *) tabbarcontroller
{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];

for(UIView *view in tabbarcontroller.view.subviews)
{
    if([view isKindOfClass:[UITabBar class]])
    {
      [view setFrame:CGRectMake(view.frame.origin.x, 480, view.frame.size.width,            
      view.frame.size.height)];
    }
    else
    {
      [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y,        
      view.frame.size.width, 480)];
    }
}

[UIView commitAnimations];
}

- (void)showTabBar:(UITabBarController *) tabbarcontroller
{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];

for(UIView *view in tabbarcontroller.view.subviews)
{
    if([view isKindOfClass:[UITabBar class]])
    {
      [view setFrame:CGRectMake(view.frame.origin.x, 431, view.frame.size.width,    
      view.frame.size.height)];

    }
    else
    {
      [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y,  
      view.frame.size.width, 431)];
     }
}

[UIView commitAnimations];
}
person mikemike396    schedule 18.12.2012