2011-12-27 7 views
0

ユーザーが画面をタップしたときにステータスバーがフェードアウトする必要があります。これがCore Animationを使って可能かどうかは疑問です。ステータスバーを次のように設定しました。Core Animationを使用してステータスバーを表示/非表示にすることはできますか?

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackTranslucent animated:YES];

私はUIViewアニメーションを使用していて、UIView animateWithDurationブロックに[[UIApplication sharedApplication] setStatusBarHidden:NO];を配置したとき、それは解消されました。私はコアアニメーションを使用しているときしかし、それは働いていない:

[CATransaction begin]; 
CABasicAnimation *fader = [CABasicAnimation animationWithKeyPath:@"opacity"]; 
[fader setDuration:2.0]; 
[fader setFromValue:[NSNumber numberWithFloat:.75]]; 
[fader setToValue:[NSNumber numberWithFloat:0]]; 
[[[[self tabBarController] tabBar]layer]addAnimation: fader forKey:@"BigFade"]; 

CABasicAnimation *fader2 = [CABasicAnimation animationWithKeyPath:@"opacity"]; 
[fader2 setDuration:2.0]; 
[fader2 setFromValue:[NSNumber numberWithFloat:1]]; 
[fader2 setToValue:[NSNumber numberWithFloat:0]]; 
[[[[self navigationController] navigationBar]layer]addAnimation: fader2 forKey:@"BigFade2"]; 

[[UIApplication sharedApplication] setStatusBarHidden:YES]; 
[CATransaction commit]; 

これはCore Animationの(私が代わりにUIViewのアニメーションのCore Animationのを使用する必要があります)で行わ取得する方法上の任意のアイデアは?

答えて

2

あなたはUIViewAnimationを使用したくないと説明しましたが、その理由は言いません。あなたはカスタムフェードアニメーションをしたいですか?あなたのモチベーションについてもっと詳しく教えてください。あなたの場合、- (void)setStatusBarHidden:(BOOL)hidden withAnimation:(UIStatusBarAnimation)animationを使って何が間違っていますか?フェード効果を得るには、第2引数に定数UIStatusBarAnimationFadeを渡すことができます。

違うやり方をしたいという問題は、ステータスバービューにアクセスする正式な方法がないことです。

statusBarは、navigationBarの一部であるとドキュメントには記載されていません。従って、あなたのコード[[self navigationController] navigationBar]layer] ...はあなたが望む効果をもたらさないでしょう。

関連する問題