2013-10-04 14 views
10

iOS 7が公開されて以来、私はiOS 6と同じように、アニメーションのステータスバーを表示または非表示にすることはできません。 今のところNSTimerを使用して非表示にします。iOS 7でアニメーションのステータスバーを非表示にするにはどうすればよいですか?

がここに私のコードです:

- (void)hideStatusBar{ 
    _isStatusBarHidden=YES; 
    [self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)]; 
} 
- (void)showStatusBar{ 
_isStatusBarHidden=NO; 
[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)]; 
} 
    //=================== 
_controlVisibilityTimer = [[NSTimer scheduledTimerWithTimeInterval:4 target:self selector:@selector(hideStatusBar:) userInfo:nil repeats:NO] retain]; 

しかし残念ながら、ステータスバーの隠蔽の仕方色褪せない、少し荒いようです。そこに誰かがこれに対する解決策を持っていますか?

更新

@hahahaソリューションを使用して、隠れ問題を解決しました。ステータスバーの背景となるビューが必要です。ここに私のコードがあります。

AppDelegate* appDelegate = (AppDelegate*)[[UIApplication sharedApplication]delegate]; 

self.StatusBarOrange = [[UIView alloc] initWithFrame:CGRectMake(0, 0, appDelegate.window.frame.size.width, 20)];  
[self.StatusBarOrange setBackgroundColor:[UIColor orangeColor]]; 
[appDelegate.window.rootViewController.view addSubview:self.StatusBarOrange]; 

これですべてが完璧に機能します。

+0

1あなたの最終的な解決策を更新するために!寄付いただきありがとうございます! – eric

+0

よろしくお願いします! – xeravim

答えて

33

は、次の例のようにアニメーションブロック内から

[UIViewController setNeedsStatusBarAppearanceUpdate]; 

を呼び出す必要があります:

@implementation SomeViewController { 
    BOOL _statusBarHidden; 
} 

- (BOOL)prefersStatusBarHidden { 
    return _statusBarHidden; 
} 

- (void)showStatusBar:(BOOL)show { 
[UIView animateWithDuration:0.3 animations:^{ 
     _statusBarHidden = !show; 
     [self setNeedsStatusBarAppearanceUpdate]; 
    }]; 
} 

@end 
+0

これはあなたが知っていることは驚きです、ありがとう! setStatusBarHidden:YESは基本的にiOS5では何もしません。再度、感謝します。 – Fattie

関連する問題