关于UITabBarController的UITabBar隐藏问题

最开始的时候我用的

- (void)hideTabBar {

    if (self.tabBarController.tabBar.hidden == YES) {

        return;

    }

    UIView *contentView;

    if ( [[self.tabBarController.view.subviews objectAtIndex:0] isKindOfClass:[UITabBar class]] )

        contentView = [self.tabBarController.view.subviews objectAtIndex:1];

    else

        contentView = [self.tabBarController.view.subviews objectAtIndex:0];

    contentView.frame = CGRectMake(contentView.bounds.origin.x,  contentView.bounds.origin.y,  contentView.bounds.size.width, contentView.bounds.size.height + self.tabBarController.tabBar.frame.size.height);

    self.tabBarController.tabBar.hidden = YES;

}


- (void)showTabBar


{

    if (self.tabBarController.tabBar.hidden == NO)

    {

        return;

    }

    UIView *contentView;

    if ([[self.tabBarController.view.subviews objectAtIndex:0] isKindOfClass:[UITabBar class]]){


        contentView = [self.tabBarController.view.subviews objectAtIndex:1];

    }else{

        contentView = [self.tabBarController.view.subviews objectAtIndex:0];

    }

    contentView.frame = CGRectMake(contentView.bounds.origin.x, contentView.bounds.origin.y,  contentView.bounds.size.width, contentView.bounds.size.height - self.tabBarController.tabBar.frame.size.height);

    self.tabBarController.tabBar.hidden = NO;

}


但是发现控制器里面有多层的话就隐藏就会失效,而且这个方法一般用在iOS7之前的系统,iOS7之后出现了

hidesBottomBarWhenPushed

这个属性,确实是非常的神奇,一句话就可以隐藏UITabBar。


根据我的项目中的经验,要么项目中全用hidesBottomBarWhenPushed 要么全用iOS7之前的方法。

项目中两者混用确实把我给坑了一把(比如融云的SDK不知道用的什么方法,而你的项目却用的iOS7之前的方法),建议以后全用hidesBottomBarWhenPushed避免不必要的问题发生,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值