2014-01-18 41 views
1

我有一个UITabBarController包含不同的UINavigationControllers。其中一个UINavigationControllerrootViewController以纵向模式在UINavigationBarUITabBar之间显示一个图表(使用ShinobiCharts)。当转向风景时,我想隐藏UINavigationBarUITabBar并全屏显示我的图表。导航栏不是问题,我不知道如何为标签栏。我可以隐藏它,但隐藏后调整图表的大小并不会像我想要的那样大。在iPhone上使用UINavigationBar和UITabBar在屏幕上全屏查看iPhone

这似乎是一个非常简单的需求,我敢打赌有一个相当简单的解决方案,不是吗?

回答

2

看一看How to hide uitabbarcontroller

基本上,您可以更改标签栏视图的大小,以使标签栏位于窗口边界之外。

+0

谢谢你指点我。工作得很好。 – flohei

0
- (void)hideTabBar:(UITabBarController *) tabbarcontroller 
{ 
[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.3]; 

for(UIView *view in tabbarcontroller.view.subviews) 
{ 
if([view isKindOfClass:[UITabBar class]]) 
{ 
    [view setFrame:CGRectMake(view.frame.origin.x, 480, view.frame.size.width,    
    view.frame.size.height)]; 
} 
else 
{ 
    [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y,   
    view.frame.size.width, 480)]; 
} 
} 

[UIView commitAnimations]; 
} 

- (void)showTabBar:(UITabBarController *) tabbarcontroller 
{ 
[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.3]; 

for(UIView *view in tabbarcontroller.view.subviews) 
{ 
if([view isKindOfClass:[UITabBar class]]) 
{ 
    [view setFrame:CGRectMake(view.frame.origin.x, 431, view.frame.size.width,  
    view.frame.size.height)]; 

} 
else 
{ 
    [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, 
    view.frame.size.width, 431)]; 
} 
} 

[UIView commitAnimations]; 
} 

这里的关键是,简单地隐藏tabBar是不是一个解决方案,因为嵌套subviews不会被调整。

当我想隐藏tabBar并调整它的大小时,我使用上面的代码subviews。在您推动viewController(附图表)之前,您必须先隐藏/显示相框。