2013-10-04 1 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

일 최종 솔루션을 업데이트하기 위해! 기부 해 주셔서 감사합니다! – 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