如何以编程方式隐藏选项卡栏,然后展开视图以适应

时间:2010-10-27 09:42:38

标签: iphone uitabbarcontroller

我从这个问题得到了代码:How to hide UITabBarController programmatically?这很精彩,但是视图没有扩展到适合标签栏留下的空间。

我已经为视图设置了相应的UIViewAutoresizingMasks,但我假设这只是因为它隐藏并不意味着它还没有占用空间?

无论如何,如果我[self.navigationController setNavigationBarHidden:YES animated:YES];,导航栏会向上移动并离开屏幕,用它展开视图。

如何为Tab栏复制此行为?

5 个答案:

答案 0 :(得分:1)

原来不太可能。最好的方法是呈现模态视图(导航)控制器,而不是推动视图控制器。

答案 1 :(得分:1)

这对我很有用! (结合其他帖子提到的解决方案-580随机大数)

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

答案 2 :(得分:1)

-(void)hideTabBar
{   UITabBarController * tabbarcontroller= appDelegate.tabBarVC;
        if (tabbarcontroller.tabBar.isHidden) 
    {
        return;
    }
    tabbarcontroller.tabBar.hidden=YES;
    CGRect frm=tabbarcontroller.view.frame;
    frm.size.height += tabbarcontroller.tabBar.frame.size.height;
    tabbarcontroller.view.frame=frm;
}
-(void)showTabBar
{    UITabBarController * tabbarcontroller=appDelegate.tabBarVC;
    if (!tabbarcontroller.tabBar.isHidden)
    {
        return;
    }
    CGRect frm=tabbarcontroller.view.frame;
    frm.size.height -= tabbarcontroller.tabBar.frame.size.height;
    tabbarcontroller.view.frame=frm;
    tabbarcontroller.tabBar.hidden=NO;  
}
here appDelegate is = (AppDelegate *) [[UIApplication sharedApplication] delegate]
tabBarVc is UITabBarController *tabBarVC defined as property in app delegate

答案 3 :(得分:0)

在NSContraints时代,不要试图逐个代码地修改,可能会发生不好的事情。

使用:     pushViewController.hidesBottomBarWhenPushed = YES;

通常在prepareforSegue中设置hidesBottomBarWhenPushed为yes,无论如何在iOS实际推送新控制器之前。

答案 4 :(得分:-1)

最简单的方法可能是为视图设置一个新框架:

CGRect viewFrame = view.frame;
viewFrame.size.height += 40; // Change this to the height of the tab bar
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.75];

view.frame = viewFrame;

[UIView commitAnimations];