2011-08-05 104 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值開始。 –

相關問題