我们在写程序的时候通常会遇到的一个问题,当我push到下一个界面的时候,需要把上面的navigationBar隐藏掉,或者把下面的tabBar隐藏掉.又或者两个全部隐藏掉.然后点击返回的时候这两个bar又完好如初的出现在我们面前.
首先,我每次隐藏这两个Bar的时候,都是写在控制器的生命周期里面
loadView,viewDidLoad,viewWillAppear,viewDidAppear,viewWillDisappear,viewDidDisappear
上面的方法可以帮助我们很好的去隐藏"帽子"和"鞋子"
一般我隐藏navigationBar的时候 比如 A->B B界面我不想看到由A带过来的navigationBar那么我就在B的viewWillAppear里面写一个方法让其隐藏掉就可以了(这里隐藏的是统一的navigationBar,就是说,你回来以后A也没了"帽子")
代码:(B.m)
-(void)viewWillAppear:(BOOL)animated{
self.navigationController.navigationBarHidden = YES;
(下面这种方式也是可以的,toolBar这个只能用getter方法,默认是yes)
//self.navigationController.navigationBarHidden = self.navigationController.isToolbarHidden;
}
返回A界面 帽子出现方法(B.m)
-(void)viewWillDisappear:(BOOL)animated{
self.navigationController.navigationBarHidden = NO;
}
当然这两个方法也可以写在A.m里面,但是有一个问题,A->B,我不需要"帽子",B->我又想要"帽子",写到A里面后面的所有都没了,所以不建议写在栈顶控制器里面.还是遵循谁想谁来做,做完还回去的原则.
如果换成Swift照着写就可以了,找到相应方法,一样的步骤一样的味道.
下面是隐藏TabBar
还是上面的步骤,在控制器的生命周期里面,谁要隐藏谁来做,做完记得还回去
self.tabBarController.tabBar.hidden= NO;设置tabBar的隐藏属性
这里会出现一个问题,就是,当你隐藏了头部的帽子,你会发现没什么,很棒的感觉,不由自主的多点了几下push和返回,但是当你隐藏了下边的鞋子的时候,push过去以后,下面多了个黑色的空间,这里是44还是49看你怎么定义的tabBar了.怎么解决这个问题呢,我看了好多大神的方法,contentInset 或者什么offset.y,各种下面走,能解决,肯定能.但是我想说的是一个更简单的方法,这个黑色,毋庸置疑是我们隐藏掉的tabBar的高度,就是因为我们一开始定义的时候显示tabBarController->navigationController->我们自己的VC 一般都是这样定义的App开发框架,所以我们的设置的View(不管你啥View)下面都是到了TabBar就结束了.所以我们隐藏了tabBar它多了一个块黑色.简单嘛,让你的隐藏TabBar的控制器的View穿透TabBar就行了嘛.
解决隐藏tabBar黑色多余部分,在哪里隐藏,下面这句代码写哪里.
self.tabBarController.tabBar.translucent = YES;
上面这些方法都是一下没一下有的,有些时候我们需要动画效果,我当时想到的是UIView的动画效果还是可以的嘛
[UIView animateWithDuration:0.25 animations:^{
self.navigationController.navigationBarHidden = self.navigationController.isToolbarHidden;
}];
这里说明一下,这个动画效果你得和你PUSH或者POP的时间差不多才行,不然老尴尬了.我一般猜系统的那些时间都是0.25,不知道为什么,就是想猜0.25.还有这个隐藏的方向是朝上隐藏的,万一老板就想要左边push navigationBar往上一点点消失呢.对吧.
当然苹果粑粑肯定有自己的方法,下面两个是系统自带的方法
系统自带的动态隐藏两个Bar的方法
"帽子"
[self.navigationController setNavigationBarHidden:YES animated:YES];
"鞋子"
[self.tabBarController.tabBar setHidden:YES];
关于两个Bar还有好多东西,自定义tintColor,titleView,BarButtonItem老多东西了.我也是学艺不精,目前只能稍微的粗糙的写下上面的东西.
本文不针对任何学术性研究,单纯为了娱乐.看不惯我就直说,反正我不改.
宝剑锋从磨砺出,梅花香自苦寒来.