- 在项目中经常遇到隐藏tabBar,实力很多种方法,可以解决不同情况下问题
- 使用中涉及到view的层次关系,下面的使用方法 1、2不做说明;在使用3、4方法时注意要在tabBar所在的rootView中调用实现(必要时使用委托,已达到所需要的目的)
- 举例:A(rootView 是tabBarCtroller);B(A的subView);C(B通过pushViewController)
- 如果想要C出现的时候将tabView隐藏(且C是全屏的,能展开到tabbar存在的位置),B显示的时候babView在显示出来
- 此情况明显1、2方法不能实现了,要用3、4的方法来实现;
- 实现方式:B在pushViewController的时候调用其委托函数(即B消失C出现时tabbar隐藏)
- if([delegaterespondsToSelector:@selector(hidenTabbar:)])
- {
- [delegatehidenTabbar:YES];
- }
- 在A中实现B的委托代码就是3、4;
- 同样在B的viewWillAppear中也调用其委托:NO;(B显示时tabbar出现)
- -(void)viewWillAppear:(BOOL)animated
- {
- if([delegate respondsToSelector:@selector(hidenTabbar:)])
- {
- [delegatehidenTabbar:NO];
- }
- }
- 1://隐藏tabBar
- WebViewController *webVc = [[WebViewController alloc] init];
- webVc.hidesBottomBarWhenPushed = YES;
- [self.navigationController pushViewController:webVc animated:YES];
- webVc.hidesBottomBarWhenPushed = NO;
- [webVc release];
- 2.系统方法 self.hidesBottomBarWhenPushed = YES;
- 3:自定义tabBar时候,由tabBarController管理的
- //隐藏tabBar
- - (void) hideTabBar:(BOOL) hidden{
- [UIView beginAnimations:nil context:NULL];
- [UIView setAnimationDuration:0];
- for(UIView *view in self.tabBarController.view.subviews)
- {
- if([view isKindOfClass:[UITabBar class]])
- {
- if (hidden) {
- [view setFrame:CGRectMake(view.frame.origin.x, iphone5?568:480, view.frame.size.width, view.frame.size.height)];
- } else {
- [view setFrame:CGRectMake(view.frame.origin.x, iphone5?568-49:480-49, view.frame.size.width, view.frame.size.height)];
- }
- }
- else
- {
- if (hidden) {
- [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, iphone5?568:480)];
- } else {
- [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, iphone5?568-49:480-49)];
- }
- }
- }
- [UIView commitAnimations];
- }
- //调整子视图
- for (UIView *subView in self.view.subviews) {
- if ([subView isKindOfClass:NSClassFromString(@"UITransitionView")]) {
- //调整子视图的高度,UITransitionView视图为UINavitaionController的根视图
- // subView.frame = CGRectMake(subView.frame.origin.x, subView.frame.origin.y, subView.frame.size.width, 480);
- CGRect frame = subView.frame;
- frame.size.height = 480;
- subView.frame = frame;
- }
- }
- 4:类似方法3
- - (void)makeTabBarHidden:(BOOL)hide
- {
- if ( [self.tabBarController.view.subviews count] < 2 )
- {
- return;
- }
- UIView *contentView;
- if ( [[self.tabBarController.view.subviews objectAtIndex:0] isKindOfClass:[UITabBar class]] )
- {
- contentView = [self.tabBarController.view.subviews objectAtIndex:1];
- }
- else
- {
- contentView = [self.tabBarController.view.subviews objectAtIndex:0];
- }
- // [UIView beginAnimations:@"TabbarHide" context:nil];
- if ( hide )
- {
- contentView.frame = self.tabBarController.view.bounds;
- }
- else
- {
- contentView.frame = CGRectMake(self.tabBarController.view.bounds.origin.x,
- self.tabBarController.view.bounds.origin.y,
- self.tabBarController.view.bounds.size.width,
- self.tabBarController.view.bounds.size.height - self.tabBarController.tabBar.frame.size.height);
- }
- self.tabBarController.tabBar.hidden = hide;
- }
隐藏TabBar的一些方法小结(适用与各种情况)的更多相关文章
-
iOS 有TabBar的VC界面push后隐藏TabBar的方法
当一个UITabbarController管理多个UINavigationController的时候, 我们要从这每一个UINavigationController中push一个ViewControl ...
-
iOS隐藏tabBar的方法
两种方法用来隐藏tabBar 1.在本页面隐藏 #pragma mark - 隐藏tabBar - (void)viewWillAppear:(BOOL)animated{ self.tabBarCo ...
-
iOS跳转洁面时隐藏tabBar的方法
//1.设置self.tabBarController.tabBar.hidden=YES; self.tabBarController.tabBar.hidden=YES; //2. ...
-
IOS 如何隐藏tabbar
系统自带的UITabBarController有时候到不到要求,需要自定义样式. 有一种方法就是在TabBar上面在放一层自己的,正好把原来的遮住. 那么,从Tab进入子的Controller想要隐藏 ...
-
iOS 隐藏Tabbar
两种方法用来隐藏tabBar 1.在本页面隐藏 #pragma mark - 隐藏tabBar - (void)viewWillAppear:(BOOL)animated{ self.tabBarC ...
-
隐藏TabBar是个累人的活
最近进行跳转界面隐藏tabbar的时候遇到了一些坑,现在把它记录下来,如果有需要的朋友可以参考一下. 大家一般使用tabbar的时候,隐藏有两种方法. 一种是设置当前所处界面的隐藏属性 self.ta ...
-
css清除浮动方法小结
清除浮动其实主要解决的就是高度塌陷问题,具体在此不再赘述~~~那些年我们一起清除过的浮动(大佬博客,写的挺不错) 方法小结:1. 1)添加额外标签 这是在学校老师就告诉我们的 一种方法,通过在浮动元素 ...
-
多层界面之间显示与隐藏tabBar
IOS中多层界面之间显示与隐藏tabBar? 在做项目的时候,遇到了一个难题,使用hidesBottomWhenPushed=YES属性设置,可以让本级界面及其以后界面都隐藏,但是根据项目 需求,在第 ...
-
Android中点击隐藏软键盘最佳方法——Android开发之路4
Android中点击隐藏软键盘最佳方法 实现功能:点击EditText,软键盘出现并且不会隐藏,点击或者触摸EditText以外的其他任何区域,软键盘被隐藏: 1.重写dispatchTouchEve ...
随机推荐
-
JAVA JDBC连接 SQLServer2012
连接数据库的java测试代码 import java.sql.*; public class ConManager { final static String cfn = "com.micr ...
-
DirectShow 最简单的入门 -- 播放一段视频
#include <dshow.h> #pragma comment(lib,"strmbase.lib") #pragma comment(lib,"qua ...
-
Qss All
/* * OOMidi application style sheet */QFrame#transportToolButtons{border: 0;spacing: 0;margin: 0;pad ...
-
[转]单例模式与静态变量在PHP中
在PHP中,没有普遍意义上的静态变量.与Java.C++不同,PHP中的静态变量的存活周期仅仅是每次PHP的会话周期,所以注定了不会有Java或者C++那种静态变量. 所以,在PHP中,静态变量的存在 ...
-
Mybatis拦截器实现分页
本文介绍使用Mybatis拦截器,实现分页:并且在dao层,直接返回自定义的分页对象. 最终dao层结果: public interface ModelMapper { Page<Model&g ...
-
测试框架Unitest的运行原理,以及多个测试类中的执行顺序以及简化方法
单元测试单元测试(unit testing)是指对软件中的最小可测试单元进行检查和验证.对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一 ...
-
fail to resolve com.umeng.analytics:analytics:latest.integration
今天友盟接入的时候,他娘的居然提示我这个友盟jar包拉不下来 明明之前还好好的,而且别的什么东西都没问题,就这个有问题 原来使用的是 compile "com.umeng.analytics ...
-
2018牛客网暑假ACM多校训练赛(第三场)G Coloring Tree 计数,bfs
原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round3-G.html 题目传送门 - 2018牛客多校赛第三场 G ...
-
《Macro-Micro Adversarial Network for Human Parsing》论文阅读笔记
<Macro-Micro Adversarial Network for Human Parsing> 摘要:在人体语义分割中,像素级别的分类损失在其低级局部不一致性和高级语义不一致性方面 ...
-
[转]Greenplum 资源隔离的原理与源码分析
摘要: 背景 Greenplum是一个MPP的数据仓库系统,最大的优点是水平扩展,并且一个QUERY就能将硬件资源的能力发挥到极致. 但这也是被一些用户诟病的一点,因为一个的QUERY就可能占光所有的 ...