iOS--隐藏和显示TabBar的方法

时间:2021-02-20 05:02:23

1.隐藏TabBar:

  1. - (void)hideTabBar {
  2. if (self.tabBarController.tabBar.hidden == YES) {
  3. return;
  4. }
  5. UIView *contentView;
  6. if ( [[self.tabBarController.view.subviews objectAtIndex:0] isKindOfClass:[UITabBar class]] )
  7. contentView = [self.tabBarController.view.subviews objectAtIndex:1];
  8. else
  9. contentView = [self.tabBarController.view.subviews objectAtIndex:0];
  10. 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);
  11. self.tabBarController.tabBar.hidden = YES;
  12. }

如果是在push之后的页面调用隐藏, 前一个页面要在willAppear中调用显示, 不然前一个页面的tabbar会消失掉.

2.显示TabBar:

  1. - (void)showTabBar
  2. {
  3. if (self.tabBarController.tabBar.hidden == NO)
  4. {
  5. return;
  6. }
  7. UIView *contentView;
  8. if ([[self.tabBarController.view.subviews objectAtIndex:0] isKindOfClass:[UITabBar class]])
  9. contentView = [self.tabBarController.view.subviews objectAtIndex:1];
  10. else
  11. contentView = [self.tabBarController.view.subviews objectAtIndex:0];
  12. 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);
  13. self.tabBarController.tabBar.hidden = NO;
  14. }

3.如果定义了上面两个方法,在viewDidAppear:方法里面就可以调用了

    1. -(void)viewDidAppear:(BOOL)animated{
    2. //[self hideTabBar];
    3. [self showTabBar];
    4. }