隐藏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
在我使用这种方法隐藏的时候,会出现下面的结果:
界面下边空出了一块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的往下每一层的viewController的tabbar都会被隐藏.
如果我们想要只在第一层显示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,你可以在每一个界面跳转的时候使用肉夹馍方式来控制自己想要的效果,不过这样就太麻烦了,失去了我们本来追求简便的意义,用来满足特定需求还不错.
所以只需要知道这个方法的原理,使用起来可以很灵活.也省去很多力气.
隐藏TabBar是个累人的活的更多相关文章
- IOS 如何隐藏tabbar
系统自带的UITabBarController有时候到不到要求,需要自定义样式. 有一种方法就是在TabBar上面在放一层自己的,正好把原来的遮住. 那么,从Tab进入子的Controller想要隐藏 ...
- 隐藏tabBar页面跳转后会再布局一次,
隐藏tabBar有2种方式 1,在sourceController中隐藏目的控制器的tabBar - (void)prepareForSegue:(UIStoryboardSegue *)segue ...
- iOS 隐藏Tabbar
两种方法用来隐藏tabBar 1.在本页面隐藏 #pragma mark - 隐藏tabBar - (void)viewWillAppear:(BOOL)animated{ self.tabBarC ...
- 隐藏TabBar的一些方法小结(适用与各种情况)
在项目中经常遇到隐藏tabBar,实力很多种方法,可以解决不同情况下问题 使用中涉及到view的层次关系,下面的使用方法 1.2不做说明:在使用3.4方法时注意要在tabBar所在的rootView中 ...
- iOS隐藏tabBar的方法
两种方法用来隐藏tabBar 1.在本页面隐藏 #pragma mark - 隐藏tabBar - (void)viewWillAppear:(BOOL)animated{ self.tabBarCo ...
- 多层界面之间显示与隐藏tabBar
IOS中多层界面之间显示与隐藏tabBar? 在做项目的时候,遇到了一个难题,使用hidesBottomWhenPushed=YES属性设置,可以让本级界面及其以后界面都隐藏,但是根据项目 需求,在第 ...
- iOS跳转洁面时隐藏tabBar的方法
//1.设置self.tabBarController.tabBar.hidden=YES; self.tabBarController.tabBar.hidden=YES; //2. ...
- iOS开发 下滑隐藏Tabbar
项目中用到下滑隐藏tabbar,上滑显示. 虽然实现起来非常简单,还是记录一下. -(void)scrollViewDidScroll:(UIScrollView*)scrollView { ...
- UINavi中push控制器的时候隐藏TabBar
当一个UITabbarController管理多个UINavigationController的时候,我们又从这每一个UINavigationController中push一个ViewControll ...
随机推荐
- angular2 学习笔记 ( Router 路由 )
参考 : https://angular.cn/docs/ts/latest/guide/router.html#!#can-activate-guard https://angular.cn/doc ...
- Chapter 32:动态规划一 总结
今天做了四道dp题,分数306. 就从我的做题顺序开始讲.. 首先是第四题,明显的记录模数DP,很快打出来了. 后来做完之后回来拍第四题,也没有什么问题,就AC了. 然后是第三题,我的性子真是太急了, ...
- 李洪强iOS开发Swift篇—10_方法
李洪强iOS开发Swift篇—10_方法 一.简单说明 跟其他面向对象语言一样,Swift中的方法可以分为2大类: (1)实例方法(Instance Methods) 在OC中,实例方法以减号(-)开 ...
- greenDaoMaster的学习研究
最近一直在研究一个第三方的开源框架,greenDaoMaster是一个移动开发的ORM框架,由于网上一直查不到使用资料,所以自己摸索总结下用法. 首先需要新建一个JAVA项目用来自动生成文件.需要导入 ...
- SimpleDateFormat的线程安全问题
做项目的时候查询的日期总是不对,花了很长时间才找到异常的根源,原来SimpleDateFormat是非线程安全的,当我把这个类放到多线程的环境下转换日期就会出现莫名奇妙的结果,这种异常找出来可真不容易 ...
- java WeakReference
在Java 1.2中就引入了java.lang.ref这个包,WeakReference就属于这个包.WeakReference是干嘛的呢,一言弊之,它是和Java中的垃圾回收相关的.如果一个对象只有 ...
- bzoj1858
比较烦的线段树 首先询问3很弱智不说, 询问4以前做过类似的,好像是USACO月赛hotel那题类似,维护lmax,rmax,max三个域就可以了 操作0,操作1也很简单,仔细考虑一下就知道也是可以l ...
- 代码演示C#中string和StingBuilder内存中的区别
关于 string和StringBuilder的区别参考MSDN.本文用程序演示它们在内存中的区别,及其因此其行为不同. //Demo string memory model namespace C ...
- Beta Round #9 (酱油杯noi考后欢乐赛)最大伤害
题目:http://www.contesthunter.org/contest/Beta%20Round%20%EF%BC%839%20%28%E9%85%B1%E6%B2%B9%E6%9D%AFno ...
- 【转】Notepad++插件NppProject发布
原文网址:http://darkbull.net/article/NppProject/ 如果notepad++安装在 系统盘/program files/ 目录下,可能会提示错误.将npp移到其他目 ...