IOS中如何在多层界面之间显示与隐藏标签栏(UITabBar)

简介:

在做项目的时候,遇到了一个难题,使用hidesBottomWhenPushed=YES属性设置,可以让本级界面及其以后界面都隐藏,但是根据项目

需求,在第4层是需要显示标签栏的。

于是想了很多的办法,每个要显示的push的界面前都加了hidesBottomWhenPushed=YES,要隐藏的push的界面都加了hidesBottomWhenPushed=NO,

但是一样不好使。

手动调用self.tabbarchontroller.tabbar.hiden = YES,这样写可以隐藏标签栏的项,但是上面有一层白色的空白视图占着,一样没有解决问题。

最后想到了修改标签栏的Frame的方法来解决,果真能行。


我把下面的代码写到了项目中所有视图控制器的父类中:(记得暴露出这两个方法,让子类调用)

#pragma mark - 隐藏TabbBar
- (void)hideTabbar {
  if (_originY + 49 == fabs(self.tabBarController.tabBar.frame.origin.y)) {
    return ;
  }
  for (UIView *v in [self.tabBarController.view subviews]) {
    if ([v isKindOfClass:[UITabBar class]]) {
      [UIView animateWithDuration:0.01 delay:0.0f options:UIViewAnimationOptionCurveEaseOut animations:^(){
        
        CGRect frame = v.frame;
        frame.origin.y += 49.0f;
          v.frame = frame;
        NSLog(@"tabBar originY: %f", frame.origin.y);
      } completion:nil];
    } else {
      [UIView animateWithDuration:0.01 delay:0.0f options:UIViewAnimationOptionCurveEaseOut animations:^(){
        
        CGRect frame = v.frame;
        frame.size.height += 49.0f;
        v.frame = frame;
        
      } completion:nil];
    }
  }
  return;
}

#pragma mark - 显示TabBar
- (void)showTabBar {
  if (_originY == fabs(self.tabBarController.tabBar.frame.origin.y)) {
    return ;
  }
  for (UIView *v in [self.tabBarController.view subviews]) {
    if ([v isKindOfClass:[UITabBar class]]) {
      [UIView animateWithDuration:0.01 delay:0.0f options:UIViewAnimationOptionCurveEaseOut animations:^(){
        
        CGRect frame = v.frame;
        frame.origin.y -= 49.0f;
          v.frame = frame;
      } completion:nil];
    } else {
      [UIView animateWithDuration:0.01 delay:0.0f options:UIViewAnimationOptionCurveEaseOut animations:^(){
        CGRect frame = v.frame;
        frame.size.height -= 49.0f;
        v.frame = frame;
      } completion:nil];
    }
  }
  return;
}



目录
相关文章
|
iOS开发
ios调用系统应用界面显示如何显示中文
在iOS里面,跳转到系统相簿界面,通讯录界面等后标题显示的英文,关键是手机已经设置显示中文了。
51 0
iOS--设置系统导航栏右上角按钮不显示问题
iOS--设置系统导航栏右上角按钮不显示问题
196 0
|
iOS开发 开发者
iOS开发 - placeholder默认灰色在同系统同型号手机上显示不一致(灰和黑)
iOS开发 - placeholder默认灰色在同系统同型号手机上显示不一致(灰和黑)
152 0
iOS开发 - placeholder默认灰色在同系统同型号手机上显示不一致(灰和黑)
|
iOS开发
iOS开发 - 同一段文字显示不同颜色和字体
iOS开发 - 同一段文字显示不同颜色和字体
87 0
|
iOS开发
iOS开发-同一段文字显示不同颜色
iOS开发-同一段文字显示不同颜色
76 0
|
JavaScript API Android开发
Android,iOS打开手机QQ与指定用户聊天界面
Android,iOS打开手机QQ与指定用户聊天界面
175 0
|
编译器 iOS开发
IOS越狱开发(二)———APP开机自动启动并隐藏图标
IOS越狱开发(二)———APP开机自动启动并隐藏图标
247 0
IOS越狱开发(二)———APP开机自动启动并隐藏图标
|
iOS开发
IOS显示GIF图片
IOS显示GIF图片
66 0
|
Swift iOS开发 容器
iOS 仿支付宝银行卡界面(支持Swift/OC)
在有支付相关的APP中,都有对应的钱包,虽然现在的支付宝,微信支付很流行,但是都是需要绑定自己的银行卡,那么这个银行卡的卡包页面该怎么实现呢?在网上找了许久也没有找到合适的,那就索性自己造轮子。
324 0
|
iOS开发
iOS 状态栏的隐藏显示与状态栏样式的设置
iOS 状态栏的隐藏显示与状态栏样式的设置
917 0
iOS 状态栏的隐藏显示与状态栏样式的设置