隐藏TabBar是个累人的活

最近进行跳转界面隐藏tabbar的时候遇到了一些坑,现在把它记录下来,如果有需要的朋友可以参考一下.

大家一般使用tabbar的时候,隐藏有两种方法.

一种是设置当前所处界面的隐藏属性

self.tabBarController.tabBar.hidden = YES;

这一种是在当前界面中设置tabbar的隐藏,一般用法是:

-(void)viewWillAppear:(BOOL)animated
{
    self.tabBarController.tabBar.hidden = YES;
}

-(void)viewWillDisappear:(BOOL)animated
{
    self.tabBarController.tabBar.hidden = NO;
}

tabbar在界面需要显示的时候隐藏,需要消失的时候出现,这一种管理方法很实用,界面自己处理自己的tabbar,不会影响到其他的界面,但是当需要隐藏的界面特别多的时候会很麻烦.
还有一点需要注意的是当你使用这个方法设置了隐藏的时候,tabbar的位置会空出一块来

例如:
我是使用的xib,显示一个单独的界面,这是一个单独的tableView

tableView

在我使用这种方法隐藏的时候,会出现下面的结果:

显示出了空出的效果

界面下边空出了一块tabbar的高度,这一点是在使用的时候需要注意的,如果使用这种方式,需要在搭建界面的之前就设置好,避免回过头来设置导致一些坑.使用下面的方式设置不会出现这种问题.

第二种方式是设置在push的时候隐藏底部视图

viewController.hidesBottomBarWhenPushed = YES;

对于这一种方法,苹果官方文档的解释是:

A view controller added as a child of a navigation controller can display an optional toolbar at the bottom of the screen. The value of this property on the topmost view controller determines whether the toolbar is visible. If the value of this property is YES, the toolbar is hidden. If the value of this property is NO, the bar is visible.

对于这一段话理解是:
设置这一个值的ViewController,他和他push的往下每一层的viewControllertabbar都会被隐藏.

如果我们想要只在第一层显示tabbar,往下的每一层都不显示的话,只需要设置

NextViewController *avc = [[NextViewController alloc] init];
avc.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:avc animated:YES];

即可实现.

如果说我需要在往下的第n层设置显示tabbar呢?
尝试发现,如果一个viewController上一层本身就没有显示tabbar,你不能用方法hidesBottomBarWhenPushed = NO;来让他再次显示出来

不过你可以使用

{
    self.tabBarController.tabBar.hidden = YES;
}

-(void)viewWillDisappear:(BOOL)animated
{
    self.tabBarController.tabBar.hidden = NO;
}

来显示tabbar,不过不可避免的,会出现上面说的那个坑.

还有一种比较极端的方法

NextViewController *avc = [[NextViewController alloc] init];
    avc.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:avc animated:YES];
    avc.hidesBottomBarWhenPushed = NO;

意思就是只在这一个push方法中隐藏下个界面的tabbar,你可以在每一个界面跳转的时候使用肉夹馍方式来控制自己想要的效果,不过这样就太麻烦了,失去了我们本来追求简便的意义,用来满足特定需求还不错.

所以只需要知道这个方法的原理,使用起来可以很灵活.也省去很多力气.

时间: 2024-10-05 07:39:58

隐藏TabBar是个累人的活的相关文章

iOS跳转界面时隐藏tabBar的方法

[1].[代码] [Objective-C]代码 1 2 3 4 5 6 7 8 9 10 11 12 13 //1.设置self.tabBarController.tabBar.hidden=YES;      self.tabBarController.tabBar.hidden=YES; //2.如果在push跳转时需要隐藏tabBar,设置self.hidesBottomBarWhenPushed=YES;     self.hidesBottomBarWhenPushed=YES;  

隐藏tabBar页面跳转后会再布局一次,

隐藏tabBar有2种方式 1,在sourceController中隐藏目的控制器的tabBar - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { UIViewController *vc = segue.destinationViewController; vc.hidesBottomBarWhenPushed = YES; } 2,storyboard中勾选Hide Bottom Bar on pus

隐藏TabBar的一些方法小结(适用与各种情况)

版权声明:本文为博主原创文章,未经博主允许不得转载. [cpp] view plain copy 在项目中经常遇到隐藏tabBar,实力很多种方法,可以解决不同情况下问题 使用中涉及到view的层次关系,下面的使用方法 1.2不做说明:在使用3.4方法时注意要在tabBar所在的rootView中调用实现(必要时使用委托,已达到所需要的目的) 举例:A(rootView 是tabBarCtroller):B(A的subView):C(B通过pushViewController) 如果想要C出现的

iOSPush自动隐藏tabbar

紧接着上次的话题,还是自动隐藏tabbar,有反馈说太复杂,那这次就来个更简单的,只需要在UITabBarController添加控制器的时候调用YZNav就可以了,就可以实现tabbar的自动隐藏了. 直接上github地址:https://github.com/YouZhiZheShiJingCheng/YZ_nav 源码里面有说明哦.非常简单.

iOS 隐藏Tabbar

两种方法用来隐藏tabBar 1.在本页面隐藏 #pragma mark - 隐藏tabBar - (void)viewWillAppear:(BOOL)animated{  self.tabBarController.tabBar.hidden = YES; } - (void)viewWillDisappear:(BOOL)animated{   self.tabBarController.tabBar.hidden = NO; } 2.再跳界面之前设置跳转后隐藏tabBar #pragma

IOS研究之UITabBarController隐藏tabBar以及addChildViewController

 最近我所在的项目组对项目进行了一些基础组件的优化,其中有关于UITabBarController隐藏tabBar的问题感觉有必要总结下. 一,需求分析 先来说说项目基本需求:整个项目由左侧栏和主视图组成,主视图主体是一个UITabBarController,下属几个嵌套了UINavigationController的UIViewController. 要求:当在页面上下滑动的时候,根据用户手势需要隐藏显示底部栏,也就是默认的UITabBarController的tabBar. 我在设计的时

iOS隐藏tabBar的方法

两种方法用来隐藏tabBar 1.在本页面隐藏 #pragma mark - 隐藏tabBar - (void)viewWillAppear:(BOOL)animated{ self.tabBarController.tabBar.hidden = YES; } - (void)viewWillDisappear:(BOOL)animated{   self.tabBarController.tabBar.hidden = NO; } 2.再跳界面之前设置跳转后隐藏tabBar #pragma

iOS push隐藏tabbar

当一个UITabbarController管理多个UINavigationController的时候,我们又从这每一个UINavigationController中push一个ViewController的时候,如果不作处理,就会出现推出来的ViewController同样会显示TabBar,怎么样去除呢,很简单,方式如下: ViewController *controller = [[ViewController alloc]init]; [controller setHidesBottomB

IOS 点击tabbaritem跳转到一个新界面,且隐藏tabbar

先自定义一个UITabbarController,用于Storyboard中 再在MyTabbarController中实现protocol @interface MyTabbarController : UITabBarController <UITabBarControllerDelegate> @end 再实现代理里面的方法 @implementation MyTabbarController - (BOOL)tabBarController:(UITabBarController *)