ios 开发怎么隐藏tabbar

2025-05-15 23:50:06
推荐回答(2个)
回答1:

修改 TabBar 的 subview 的 frame 就可以了。其中,TabBar 的subview 共有两个,一个叫UITabBar,另一个叫UITranstionview。将UITabBar的 y 向下移49个单位,把UITranstionview 的 hight 加长 49 个单位。但是有时候这样隐藏tabbar后,原来的viewcontroller上的view就会被拉长。解决方法是修改viewcontroller上的view 的autosizing。

以下是具体代码,另加上了动画效果:

for (UIView *v in [self.tabBarController.view subviews]) {
        if ([v isKindOfClass:[UITabBar class]]) {
            
            [UIView animateWithDuration:kDuration delay:0.0f options:UIViewAnimationOptionCurveEaseOut animations:^(){
                
                CGRect frame = v.frame;
                frame.origin.y += 49.0f;
                v.frame = frame;
                
            } completion:^(BOOL complete)
             {
                 isAnimating = NO;
             }];
        } else {
            
            isAnimating = YES;
            
            [UIView animateWithDuration:kDuration delay:0.0f options:UIViewAnimationOptionCurveEaseOut animations:^(){
                
                CGRect frame = v.frame;
                frame.size.height += 49.0f;
                v.frame = frame;
                
            } completion:nil];
        }
    }

回答2:

系统自带的UITabBarController有时候到不到要求,需要自定义样式。
有一种方法就是在TabBar上面在放一层自己的,正好把原来的遮住。
那么,从Tab进入子的Controller想要隐藏TabBar怎么办呢?
假如说你是用 TabBar + Navigation来做的,从第一个Tab——TabBar1进入子Controller(称作A),
逻辑很简单,就是从TabBar1点击进入A,
你需要在TabBar1点击事件(A显示之前)加上
self.hidesBottomBarWhenPushed = YES;
然后在A的viewWillAppear中把你自己自定义,也就是覆盖在系统TabBar上面的东西隐藏;
在viewWillDisappear中再将其显示就可以了。

示例代码如下:
点击事件:

TabNoticeController *vc = [[TabNoticeController alloc] init];
self.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:vc animated:YES];
[vc release];

A中的代码:

- (void)viewWillAppear:(BOOL)animated {
[xxxTabBar setTabBarHidden:YES];
}
- (void)viewWillDisappear:(BOOL)animated {
[xxxTabBar setTabBarHidden:NO];
}