How to hide uitabbarcontroller How to hide uitabbarcontroller ios ios

How to hide uitabbarcontroller


I am pasting this from my working code... you can call these methods to hide and show the tabbarcontroller.... just pass tabbarcontroller instance to these functions..

// Method call[self hideTabBar:self.tabBarController];   

// Method implementations- (void)hideTabBar:(UITabBarController *) tabbarcontroller{    [UIView beginAnimations:nil context:NULL];    [UIView setAnimationDuration:0.5];    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.5];    for(UIView *view in tabbarcontroller.view.subviews)    {        NSLog(@"%@", view);        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]; }


Modified Setomidor's answer to work on both landscape, portrait, and iPad (the 320 and 480 values only work on iPhone).

- (void) hideTabBar:(UITabBarController *) tabbarcontroller {    CGRect screenRect = [[UIScreen mainScreen] bounds];    [UIView beginAnimations:nil context:NULL];    [UIView setAnimationDuration:0.5];    float fHeight = screenRect.size.height;    if(  UIDeviceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation) )    {        fHeight = screenRect.size.width;    }    for(UIView *view in tabbarcontroller.view.subviews)    {        if([view isKindOfClass:[UITabBar class]])        {            [view setFrame:CGRectMake(view.frame.origin.x, fHeight, view.frame.size.width, view.frame.size.height)];        }         else         {            [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, fHeight)];            view.backgroundColor = [UIColor blackColor];        }    }    [UIView commitAnimations];}- (void) showTabBar:(UITabBarController *) tabbarcontroller {       CGRect screenRect = [[UIScreen mainScreen] bounds];    float fHeight = screenRect.size.height - tabbarcontroller.tabBar.frame.size.height;    if(  UIDeviceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation) )    {        fHeight = screenRect.size.width - tabbarcontroller.tabBar.frame.size.height;    }    [UIView beginAnimations:nil context:NULL];    [UIView setAnimationDuration:0.5];    for(UIView *view in tabbarcontroller.view.subviews)    {           if([view isKindOfClass:[UITabBar class]])        {            [view setFrame:CGRectMake(view.frame.origin.x, fHeight, view.frame.size.width, view.frame.size.height)];                    }         else         {            [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, fHeight)];        }           }    [UIView commitAnimations]; }

Also modified the code to handle changes introduced in iOS 6 with UIDevice orientation change and ensure that it works properly even when the device is lying on its back.


In your action method for the button:

[self.tabBarController.tabBar setHidden:YES];