美文网首页
4.隐藏底部tabbar的三种方法和注意点

4.隐藏底部tabbar的三种方法和注意点

作者: 枫之叶_小乙哥 | 来源:发表于2018-12-10 16:05 被阅读8次

1.方法一:viewController.hidesBottomBarWhenPushed = YES;


viewController.hidesBottomBarWhenPushed = YES;

例如:判断是否是一级控制器,如果不是一级控制器,则跳转时隐藏底部tabbar

// 自定义navigationViewController
#import "ZGKNavigationViewController.h"
@interface ZGKNavigationViewController ()<UIGestureRecognizerDelegate>

@end

@implementation ZGKNavigationViewController

#pragma mark - UIGestureRecognizerDelegate
// 控制手势是否触发
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    // 在根控制器下,就不需要滑动手势,返回NO
    return self.childViewControllers.count > 1;
}

- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    // 根控制器不需要设置返回按钮
    
    if (self.childViewControllers.count) { // 非根控制器

        
        viewController.hidesBottomBarWhenPushed = YES;
        
    }
    
    // 注意。一定要记得调用super,
    [super pushViewController:viewController animated:animated];
    
}

方法二:跳转之前,先设置要跳转的控制器hidesBottomBarWhenPushed的属性为YES

viewController.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:vc animated:YES];

方法三: 在控制器内部,如:viewDidLoad内部实现下面的语句

//隐藏
self.hidesBottomBarWhenPushed = YES;
//显示
self.hidesBottomBarWhenPushed = NO;

需要注意的是,使用self.hidesBottomBarWhenPushed = YES,self.view可能会因为高度不够,而造成底部出现矩形黑色阴影, 解决方法:
1.保存self.view的frame属性
2.给self.view填补tabbar隐藏后缺失的高度
3.需要显示tabbar的时候,还原self.view的frame, 并刷新界面

    @interface ZGKMeViewController ()<UITableViewDelegate, UITableViewDataSource>
    @property (nonatomic, assign) CGRect originRect;

    @end

    
- (void)share{
   self.tabBarController.tabBar.hidden = YES;
    // 保存self.view之前的frame
    self.originRect = self.view.frame;
    // 填补tabbar空缺的高度
    CGRect frame = self.view.frame;
    frame.size.height = self.view.zgk_height + ZGKTabbarHeight;
    self.view.frame = frame;
    // 刷新界面
    [self.view layoutIfNeeded];
}

- (void)cancelShare{
   
    self.isShare = NO;
    
    [UIView animateWithDuration:.2
                     animations:^{
                         CGRect frame = self.shareView.frame;
                         frame.origin.y = self.maskView.zgk_height;
                         self.shareView.frame = frame;
                         [self.view layoutIfNeeded];
                     } completion:^(BOOL finished) {
                         // 移除maskview
                         [self.maskView removeFromSuperview];
                         // 显示tabbar
                         self.tabBarController.tabBar.hidden = NO;

                         // 还原self.view的高度
                         self.view.frame = self.originRect;
                         [self.view layoutIfNeeded];

                     }];
}

相关文章

网友评论

      本文标题:4.隐藏底部tabbar的三种方法和注意点

      本文链接:https://www.haomeiwen.com/subject/jmxdhqtx.html