2013-10-04 10 views
10

Da quando iOS 7 è uscito, non posso mostrare o nascondere la barra di stato con l'animazione proprio come in iOS 6. Per ora uso NSTimer per controllarlo quando nasconderlo.Come nascondere la barra di stato con l'animazione in iOS 7?

Ecco il mio codice:

- (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]; 

Ma purtroppo il modo di barra di stato nascondiglio sembra un po 'po' ruvido, non scomparendo. Qualcuno là fuori ha una soluzione a questo?

Aggiornamento

ho risolto il problema nascosto, utilizzando @hahaha soluzione. Ho solo bisogno di una vista per essere lo sfondo della barra di stato, ecco il mio codice.

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]; 

e ora tutto funziona perfettamente!

+0

+1 per l'aggiornamento con la soluzione definitiva! grazie per aver contribuito! – eric

+0

prego! – xeravim

risposta

33

è necessario chiamare

[UIViewController setNeedsStatusBarAppearanceUpdate]; 

all'interno di un blocco di animazione come nel seguente esempio:

@implementation SomeViewController { 
    BOOL _statusBarHidden; 
} 

- (BOOL)prefersStatusBarHidden { 
    return _statusBarHidden; 
} 

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

@end 
+0

È incredibile lo sai, grazie! Sembra che setStatusBarHidden: YES essenzialmente NON fa NIENTE in iOS5. Grazie ancora. – Fattie

Problemi correlati