2011-08-05 7 views
2

私は下部にUITabBarController、上部にUINavigationControllerがあるアプリを開発中です。目的C - アニメーションでUINavigationControllerとUITabBarControllerを非表示にする

UITabBarControllerからアクセスできるセクションの1つは「写真ギャラリー」のセクションで、ここでは写真をフルスクリーンで見ることができます。

私はフルスクリーンで写真を表示したいとき、私はほんの少しフェードアニメーションでUINavigationController & UITabBarControllerを非表示にすることができますどのように次のコード

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

を使用してアニメーションせずに非表示にすることができますよ! (写真をフルスクリーンで見たいときに、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メッセージに異なる入力を与えることでアニメーションの時間(秒単位)。

編集:「再出現する」フェードアニメーションの場合は、アルファ値を反転させて0から1にすることができます。コードを見たい場合はコメントを残してください。

+0

よく機能します。半透明のナビゲーションバー(これはおそらくこの場合に推奨されます)を持っているなら、 'setNavigationBarHidden'呼び出しは必要ありません。また、最初の 'navigationBar.alpha = 1'ステートメントは不要なので削除しました。フェードは現在のアルファ値が何であっても開始します。 –

関連する問題