最近进行跳转界面隐藏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,你可以在每一个界面跳转的时候使用肉夹馍方式来控制自己想要的效果,不过这样就太麻烦了,失去了我们本来追求简便的意义,用来满足特定需求还不错.

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

 

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

  1. IOS 如何隐藏tabbar

    系统自带的UITabBarController有时候到不到要求,需要自定义样式. 有一种方法就是在TabBar上面在放一层自己的,正好把原来的遮住. 那么,从Tab进入子的Controller想要隐藏 ...

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

    隐藏tabBar有2种方式 1,在sourceController中隐藏目的控制器的tabBar - (void)prepareForSegue:(UIStoryboardSegue *)segue ...

  3. iOS 隐藏Tabbar

    两种方法用来隐藏tabBar 1.在本页面隐藏 #pragma mark - 隐藏tabBar - (void)viewWillAppear:(BOOL)animated{  self.tabBarC ...

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

    在项目中经常遇到隐藏tabBar,实力很多种方法,可以解决不同情况下问题 使用中涉及到view的层次关系,下面的使用方法 1.2不做说明:在使用3.4方法时注意要在tabBar所在的rootView中 ...

  5. iOS隐藏tabBar的方法

    两种方法用来隐藏tabBar 1.在本页面隐藏 #pragma mark - 隐藏tabBar - (void)viewWillAppear:(BOOL)animated{ self.tabBarCo ...

  6. 多层界面之间显示与隐藏tabBar

    IOS中多层界面之间显示与隐藏tabBar? 在做项目的时候,遇到了一个难题,使用hidesBottomWhenPushed=YES属性设置,可以让本级界面及其以后界面都隐藏,但是根据项目 需求,在第 ...

  7. iOS跳转洁面时隐藏tabBar的方法

    //1.设置self.tabBarController.tabBar.hidden=YES;       self.tabBarController.tabBar.hidden=YES;   //2. ...

  8. iOS开发 下滑隐藏Tabbar

    项目中用到下滑隐藏tabbar,上滑显示.      虽然实现起来非常简单,还是记录一下. -(void)scrollViewDidScroll:(UIScrollView*)scrollView { ...

  9. UINavi中push控制器的时候隐藏TabBar

    当一个UITabbarController管理多个UINavigationController的时候,我们又从这每一个UINavigationController中push一个ViewControll ...

随机推荐

  1. Spring 配置方式

    1.bean的配置方式:通过全类名(反射),通过工厂方法(静态工厂方法&实例工厂方法).FactoryBean. 2.静态工厂方法:直接调用某一个类的静态方法就可以返回bean的实例. cla ...

  2. 用MATLAB画函数的曲线

    用MATLAB画函数曲线 2013年8月11日 命令funtool 这是单变量函数分析的交互界面,比较方便,特别适用于y=f(x)型,即y与x分开的函数形式.见下图

  3. 33个优秀的HTML5应用演示 (转)

    33个优秀的HTML5应用演示 (转) HTML5能做什么?取代Flash?制作动画?开发程序应用?这些都只是HTML5的一小部分功能而已. 大家可能听到很多关于Flash是否会被HTML5取代的讨论 ...

  4. 【转】iOS Provisioning Profile(Certificate)与Code Signing详解 -- 待看

    原文网址:http://blog.sina.com.cn/s/blog_82c8198f0102vy4j.html 引言 关于开发证书配置(Certificates & Identifiers ...

  5. <转>如何将Chrome变成开发利器,开发者们在用这些插件

    Chrome 浏览器具有强大的跨平台能力以及丰富的扩展插件,一直是许多开发者的首要选择.而利用许多 Chrome 插件,开发者们在开发流程中能够极大地提高开发效率.我们就整理了十款开发者常用的 Chr ...

  6. applicationContext.xml 配置

    Hibernate SQL方言 (hibernate.dialect) 数据库 hibernate方言 DB2 org.hibernate.dialect.DB2Dialect DB2 AS/400 ...

  7. Castle学习系列之二:Castle配置

    说明:本系列文章参考自李会军先生的Castle 开发系列文章,然后记录自己在学习时遇到的一些问题,记录之. 主要内容 1.Castle配置学习 2.初始化配置 Castle配置学习 <?xml ...

  8. MySQL数据库的优化-运维架构师必会高薪技能,笔者近六年来一线城市工作实战经验

    原文地址:http://liangweilinux.blog.51cto.com/8340258/1728131 首先在此感谢下我的老师年一线实战经验,我当然不能和我的老师平起平坐,得到老师三分之一的 ...

  9. HDOJ/HDU 1015 Safecracker(深搜)

    Problem Description === Op tech briefing, 2002/11/02 06:42 CST === "The item is locked in a Kle ...

  10. [LeetCode] Minimum Size Subarray Sum 解题思路

    Given an array of n positive integers and a positive integer s, find the minimal length of a subarra ...