我从这个问题得到了代码:How to hide UITabBarController programmatically?这很精彩,但是视图没有扩展到适合标签栏留下的空间。
我已经为视图设置了相应的UIViewAutoresizingMasks,但我假设这只是因为它隐藏并不意味着它还没有占用空间?
无论如何,如果我[self.navigationController setNavigationBarHidden:YES animated:YES];
,导航栏会向上移动并离开屏幕,用它展开视图。
如何为Tab栏复制此行为?
答案 0 :(得分:1)
原来不太可能。最好的方法是呈现模态视图(导航)控制器,而不是推动视图控制器。
答案 1 :(得分:1)
这对我很有用! (结合其他帖子提到的解决方案-580随机大数)
for(UIView *view in self.tabBarController.view.subviews)
{
if([view isKindOfClass:[UITabBar class]])
{
[view setFrame:CGRectMake(view.frame.origin.x, 580, view.frame.size.width,
view.frame.size.height)];
}
else
{
[view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y,
view.frame.size.width, view.frame.size.height +40)];
}
}
答案 2 :(得分:1)
-(void)hideTabBar
{ UITabBarController * tabbarcontroller= appDelegate.tabBarVC;
if (tabbarcontroller.tabBar.isHidden)
{
return;
}
tabbarcontroller.tabBar.hidden=YES;
CGRect frm=tabbarcontroller.view.frame;
frm.size.height += tabbarcontroller.tabBar.frame.size.height;
tabbarcontroller.view.frame=frm;
}
-(void)showTabBar
{ UITabBarController * tabbarcontroller=appDelegate.tabBarVC;
if (!tabbarcontroller.tabBar.isHidden)
{
return;
}
CGRect frm=tabbarcontroller.view.frame;
frm.size.height -= tabbarcontroller.tabBar.frame.size.height;
tabbarcontroller.view.frame=frm;
tabbarcontroller.tabBar.hidden=NO;
}
here appDelegate is = (AppDelegate *) [[UIApplication sharedApplication] delegate]
tabBarVc is UITabBarController *tabBarVC defined as property in app delegate
答案 3 :(得分:0)
使用: pushViewController.hidesBottomBarWhenPushed = YES;
通常在prepareforSegue中设置hidesBottomBarWhenPushed为yes,无论如何在iOS实际推送新控制器之前。
答案 4 :(得分:-1)
最简单的方法可能是为视图设置一个新框架:
CGRect viewFrame = view.frame;
viewFrame.size.height += 40; // Change this to the height of the tab bar
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.75];
view.frame = viewFrame;
[UIView commitAnimations];