1. 在项目中经常遇到隐藏tabBar,实力很多种方法,可以解决不同情况下问题
  2. 使用中涉及到view的层次关系,下面的使用方法 1、2不做说明;在使用3、4方法时注意要在tabBar所在的rootView中调用实现(必要时使用委托,已达到所需要的目的)
  3. 举例:A(rootView 是tabBarCtroller);B(A的subView);C(B通过pushViewController)
  4. 如果想要C出现的时候将tabView隐藏(且C是全屏的,能展开到tabbar存在的位置),B显示的时候babView在显示出来
  5. 此情况明显1、2方法不能实现了,要用3、4的方法来实现;
  6. 实现方式:B在pushViewController的时候调用其委托函数(即B消失C出现时tabbar隐藏)
  7. if([delegaterespondsToSelector:@selector(hidenTabbar:)])
  8. {
  9. [delegatehidenTabbar:YES];
  10. }
  11. 在A中实现B的委托代码就是3、4;
  12. 同样在B的viewWillAppear中也调用其委托:NO;(B显示时tabbar出现)
  13. -(void)viewWillAppear:(BOOL)animated
  14. {
  15. if([delegate respondsToSelector:@selector(hidenTabbar:)])
  16. {
  17. [delegatehidenTabbar:NO];
  18. }
  19. }
  20. 1://隐藏tabBar
  21. WebViewController *webVc = [[WebViewController alloc] init];
  22. webVc.hidesBottomBarWhenPushed = YES;
  23. [self.navigationController pushViewController:webVc animated:YES];
  24. webVc.hidesBottomBarWhenPushed = NO;
  25. [webVc release];
  26. 2.系统方法    self.hidesBottomBarWhenPushed = YES;
  27. 3:自定义tabBar时候,由tabBarController管理的
  28. //隐藏tabBar
  29. - (void) hideTabBar:(BOOL) hidden{
  30. [UIView beginAnimations:nil context:NULL];
  31. [UIView setAnimationDuration:0];
  32. for(UIView *view in self.tabBarController.view.subviews)
  33. {
  34. if([view isKindOfClass:[UITabBar class]])
  35. {
  36. if (hidden) {
  37. [view setFrame:CGRectMake(view.frame.origin.x, iphone5?568:480, view.frame.size.width, view.frame.size.height)];
  38. } else {
  39. [view setFrame:CGRectMake(view.frame.origin.x, iphone5?568-49:480-49, view.frame.size.width, view.frame.size.height)];
  40. }
  41. }
  42. else
  43. {
  44. if (hidden) {
  45. [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, iphone5?568:480)];
  46. } else {
  47. [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width,  iphone5?568-49:480-49)];
  48. }
  49. }
  50. }
  51. [UIView commitAnimations];
  52. }
  53. //调整子视图
  54. for (UIView *subView in self.view.subviews) {
  55. if ([subView isKindOfClass:NSClassFromString(@"UITransitionView")]) {
  56. //调整子视图的高度,UITransitionView视图为UINavitaionController的根视图
  57. //            subView.frame = CGRectMake(subView.frame.origin.x, subView.frame.origin.y, subView.frame.size.width, 480);
  58. CGRect frame = subView.frame;
  59. frame.size.height = 480;
  60. subView.frame = frame;
  61. }
  62. }
  63. 4:类似方法3
  64. - (void)makeTabBarHidden:(BOOL)hide
  65. {
  66. if ( [self.tabBarController.view.subviews count] < 2 )
  67. {
  68. return;
  69. }
  70. UIView *contentView;
  71. if ( [[self.tabBarController.view.subviews objectAtIndex:0] isKindOfClass:[UITabBar class]] )
  72. {
  73. contentView = [self.tabBarController.view.subviews objectAtIndex:1];
  74. }
  75. else
  76. {
  77. contentView = [self.tabBarController.view.subviews objectAtIndex:0];
  78. }
  79. //    [UIView beginAnimations:@"TabbarHide" context:nil];
  80. if ( hide )
  81. {
  82. contentView.frame = self.tabBarController.view.bounds;
  83. }
  84. else
  85. {
  86. contentView.frame = CGRectMake(self.tabBarController.view.bounds.origin.x,
  87. self.tabBarController.view.bounds.origin.y,
  88. self.tabBarController.view.bounds.size.width,
  89. self.tabBarController.view.bounds.size.height - self.tabBarController.tabBar.frame.size.height);
  90. }
  91. self.tabBarController.tabBar.hidden = hide;
  92. }

隐藏TabBar的一些方法小结(适用与各种情况)的更多相关文章

  1. iOS 有TabBar的VC界面push后隐藏TabBar的方法

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

  2. iOS隐藏tabBar的方法

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

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

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

  4. IOS 如何隐藏tabbar

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

  5. iOS 隐藏Tabbar

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

  6. 隐藏TabBar是个累人的活

    最近进行跳转界面隐藏tabbar的时候遇到了一些坑,现在把它记录下来,如果有需要的朋友可以参考一下. 大家一般使用tabbar的时候,隐藏有两种方法. 一种是设置当前所处界面的隐藏属性 self.ta ...

  7. css清除浮动方法小结

    清除浮动其实主要解决的就是高度塌陷问题,具体在此不再赘述~~~那些年我们一起清除过的浮动(大佬博客,写的挺不错) 方法小结:1. 1)添加额外标签 这是在学校老师就告诉我们的 一种方法,通过在浮动元素 ...

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

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

  9. Android中点击隐藏软键盘最佳方法——Android开发之路4

    Android中点击隐藏软键盘最佳方法 实现功能:点击EditText,软键盘出现并且不会隐藏,点击或者触摸EditText以外的其他任何区域,软键盘被隐藏: 1.重写dispatchTouchEve ...

随机推荐

  1. android学习——activity的生命周期

    Android中主要组件之Activity的生命周期,基本都是翻译Android API和个人的理解. 首先看一下Android api中所提供的Activity生命周期图: Activity其实是继 ...

  2. HDU-1395 2^x mod n = 1

    http://acm.hdu.edu.cn/showproblem.php?pid=1395 怎样取余是关键.. 2^x mod n = 1 Time Limit: 2000/1000 MS (Jav ...

  3. Web---演示Servlet的相关类、下载技术、线程问题、自定义404页面

    Servlet的其他相关类: ServletConfig – 代表Servlet的初始化配置参数. ServletContext – 代表整个Web项目. ServletRequest – 代表用户的 ...

  4. Dijkstra算法构造单源点最短路径

    迪杰斯特拉(Dijkstra)算法 是求从某个源点到其余各顶点的最短路径,即对已知图 G=(V,E),给定源顶点 s∈V,找出 s 到图中其它各顶点的最短路径. 我总结下核心算法,伪代码如下: Dij ...

  5. 近5年133个Java面试问题列表

    Java 面试随着时间的改变而改变.在过去的日子里,当你知道 String 和 StringBuilder 的区别就能让你直接进入第二轮面试,但是现在问题变得越来越高级,面试官问的问题也更深入. 在我 ...

  6. 如何在 CentOS 7 上安装 Redis 服务器

    大家好,本文的主题是 Redis,我们将要在 CentOS 7 上安装它.编译源代码,安装二进制文件,创建.安装文件.在安装了它的组件之后,我们还会配置 redis ,就像配置操作系统参数一样,目标就 ...

  7. Netbeans代码配色主题大搜集

    我用netbeans的原因之一就是因为其支持代码配色主题,这是个对于一个代码配色字体控来说是非常重要的一个功能.理所当然的,我也会收集各种配色主题来时常换换口味. 下面就是我目前收集的Netbeans ...

  8. linux学习笔记---未完待续,缓慢更新

    做为linux菜鸟,由于work的需要,慢慢的开始接触学习linux. <鸟哥的linux私房菜>学习笔记. 一.基础命令操作 1.显示日期的命令 date 执行date命令后,显示结果为 ...

  9. E. Three States - Codeforces Round #327 (Div. 2) 590C States(广搜)

    题目大意:有一个M*N的矩阵,在这个矩阵里面有三个王国,编号分别是123,想知道这三个王国连接起来最少需要再修多少路. 分析:首先求出来每个王国到所有能够到达点至少需要修建多少路,然后枚举所有点求出来 ...

  10. btrace 笔记

    转载请注明原链接地址 http://www.cnblogs.com/dongxiao-yang/p/6134393.html btrace 是一个可以不用重启线上java业务查问题的神器,记一下自己折 ...