2011-08-05 46 views
2

我正在研究一个应用程序,该应用程序底部有一个UITabBarController,屏幕顶部有UINavigationController。Objective C - 用动画隐藏UINavigationController&UITabBarController

可以通过UITabBarController访问的部分之一是“照片库”部分,我可以在其中全屏查看照片。

我用下面的代码

self.navigationController.navigationBarHidden = YES; 
[self.tabBarController.tabBar setHidden:TRUE]; 

如何隐藏的UINavigationController &的UITabBarController只有当我想以全屏模式查看照片有点掉色动画很能隐藏它们而不动画? (就像Facebook应用程序在您想要全屏查看照片时隐藏它们一样)

或者还有比我在代码片段中做的更好的方法吗?

谢谢
三通

+0

这几乎做了navigationController部分[self.navigationController setNavigationBarHidden:YES animated:YES] ;.但是它向上滑动并不会消失。 – teepusink

回答

6

只是让你自己的动画。您可以使用下面的代码...

对于UINavigationController的:

[UINavigationBar beginAnimations:@"NavBarFade" context:nil]; 
self.navigationController.navigationBar.alpha = 1; 
[self.navigationController setNavigationBarHidden:YES animated:NO]; //Animated must be NO! 
[UINavigationBar setAnimationCurve:UIViewAnimationCurveEaseIn]; 
[UINavigationBar setAnimationDuration:1.5]; 
self.navigationController.navigationBar.alpha = 0; 
[UINavigationBar commitAnimations]; 

对于的UITabBarController:

[UITabBar beginAnimations:@"TabBarFade" context:nil]; 
self.tabBarController.tabBar.alpha = 1; 
[self.tabBarController.tabBar setHidden:YES]; 
[UITabBar setAnimationCurve:UIViewAnimationCurveEaseIn]; 
[UITabBar setAnimationDuration:1.5]; 
self.tabBarController.navigationBar.alpha = 0; 
[UITabBar commitAnimations]; 

您也可以选择不同类型的衰落,或改变不同的UIViewAnimationCurve通过给setAnimationDuration消息提供一个不同的输入(以秒为单位),动画的持续时间。

编辑:对于“再现”淡入淡出动画,您只需将alpha值颠倒过来,以便从0变为1.如果您想看到代码,请留下评论。

+0

运作良好。如果你有一个半透明的导航栏(这可能是本例推荐的),那么不需要调用setNavigationBarHidden。此外,我放弃了第一个'navigationBar.alpha = 1'语句,因为它不是必需的 - 淡入淡出将从当前的alpha值开始。 –

相关问题