本文适应情况:首页自定义tabBarController,进入二级导航后页面展示内容不需要tabBarController菜单栏,但是返回上一页后tabBarController需要再次显示
- 需要隐藏tabBarController的页面添加如下代码
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:YES];
NSArray *array = self.tabBarController.view.subviews;
UIView *view = array.lastObject;
//tabBarController移到屏幕以外
view.origin = CGPointMake(0, screenHeight);
}
- 返回上一级页面再次显示tabBarController,需添加如下代码
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:YES];
NSArray *array = self.tabBarController.view.subviews;
UIView *view = array.lastObject;
//tabBarController的frame更改回之前坐标
view.frame = CGRectMake(12, 64, screenWidth-24, 38);
}
注:自定义后的self.tabBarController.view.subviews为一个数组,包含三个元素:
将lastObject移出屏幕为变相隐藏tabBarController,可以避免直接隐藏带来的复杂问题。