IOS中如何在多层界面之间显示与隐藏标签栏(UITabBar)
2016-03-23 11:23
567 查看
使用hidesBottomWhenPushed=YES属性设置,可以让本级界面及其以后界面都隐藏,如果之后还有界面要显示就没办法了
1、不使用系统自带的UITabBar,所以首先要自定义一个标签栏,继承于UIView就可以了
2、隐藏系统自带的tabbar,方法:在继承于UITabBarController的类中,添加self.tabBar.hidden = YES;
3、写一个超基类,让工程中的所有视图控制器器都直接或者间接地继承于这个超基类
4、在这个超基类中,viewDidLoad方法中,添加self.hidesBottomBarWhenPushed =YES;
然后对外公开两个方法:-hideCustomTabBar: -showCustomTabBar:
这样就可以在子类中隐藏或者显示的地方,在viewWillAppear:方法中调用即可。
在这两个方法中,可以使用动画效果来显示或者隐藏。
把下面的代码写到了项目中所有视图控制器的父类中:(记得暴露出这两个方法,让子类调用)
1、不使用系统自带的UITabBar,所以首先要自定义一个标签栏,继承于UIView就可以了
2、隐藏系统自带的tabbar,方法:在继承于UITabBarController的类中,添加self.tabBar.hidden = YES;
3、写一个超基类,让工程中的所有视图控制器器都直接或者间接地继承于这个超基类
4、在这个超基类中,viewDidLoad方法中,添加self.hidesBottomBarWhenPushed =YES;
然后对外公开两个方法:-hideCustomTabBar: -showCustomTabBar:
这样就可以在子类中隐藏或者显示的地方,在viewWillAppear:方法中调用即可。
在这两个方法中,可以使用动画效果来显示或者隐藏。
把下面的代码写到了项目中所有视图控制器的父类中:(记得暴露出这两个方法,让子类调用)
#pragma mark - 隐藏TabbBar - (void)hideTabbar { if (_originY + 49 == fabs(self.tabBarController.tabBar.frame.origin.y)) { return ; } for (UIView *v in [self.tabBarController.view subviews]) { if ([v isKindOfClass:[UITabBar class]]) { [UIView animateWithDuration:0.01 delay:0.0f options:UIViewAnimationOptionCurveEaseOut animations:^(){ CGRect frame = v.frame; frame.origin.y += 49.0f; v.frame = frame; NSLog(@"tabBar originY: %f", frame.origin.y); } completion:nil]; } else { [UIView animateWithDuration:0.01 delay:0.0f options:UIViewAnimationOptionCurveEaseOut animations:^(){ CGRect frame = v.frame; frame.size.height += 49.0f; v.frame = frame; } completion:nil]; } } return; } #pragma mark - 显示TabBar - (void)showTabBar { if (_originY == fabs(self.tabBarController.tabBar.frame.origin.y)) { return ; } for (UIView *v in [self.tabBarController.view subviews]) { if ([v isKindOfClass:[UITabBar class]]) { [UIView animateWithDuration:0.01 delay:0.0f options:UIViewAnimationOptionCurveEaseOut animations:^(){ CGRect frame = v.frame; frame.origin.y -= 49.0f; v.frame = frame; } completion:nil]; } else { [UIView animateWithDuration:0.01 delay:0.0f options:UIViewAnimationOptionCurveEaseOut animations:^(){ CGRect frame = v.frame; frame.size.height -= 49.0f; v.frame = frame; } completion:nil]; } } return; }
相关文章推荐
- Ireport Error retrieving field value from bean : ate045
- 9.UICollectionView增强
- org.hibernate.HibernateException: createSQLQuery is not valid without active transaction
- 225. Implement Stack using Queues
- 8.UIVollectionView
- 6.UITableView增强
- 5.UITableView使用 / 数据源 & 代理 / 行高 / TableViewCell 重用 / 索引栏
- 4.ScrollView常用属性,常用代理方法,图片轮播器,UIAlertView/UIActionSheet
- Bctf-pwn_ruin-re_lastflower
- win8 &win10系统下Guest 帐号本地主机登录
- skcatSgnisueueuQtnemelpmI.232
- iOS开发——UIImageView
- UITableView分割线从边框顶端开始
- Android Activity.runOnUiThread() 和 Handler
- 【学渣笔记】Xitrum Scala Web Framework Guide
- iOS UITableCell复用
- UIImageView的ContentMode属性
- Process 'command '**/ndk-build.cmd'' finished with non-zero exit value 1
- UIView的layoutSubviews和drawRect
- (转)Storm UI 解释