7

Salve, qui è il mio problema:StatusBar nei problemi searchController e searchResultsController: iOS 8

Nei miei di AppDeleagate didFinishLaunchingWithOptions: metodo Ho un metodo [auto configureUINavigationControllerStlyle]; che configura la barra di stato e l'aspetto della barra di navigazione della mia app (ho UINavigationController e UITabbarController che lavorano insieme nella mia app).

-(void) configureUINavigationControllerStlyle { 

UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController; 

UINavigationController *navigationController = (UINavigationController *)[tabBarController.viewControllers objectAtIndex:0]; 

navigationController.navigationBar.translucent = NO; 

[[UINavigationBar appearance] setBarTintColor: [CustomColor getAwesomeColor:@"colorBlue3_1"]]; 

[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]]; 

[[UINavigationBar appearance] setTitleTextAttributes:@{ 
NSForegroundColorAttributeName : [UIColor whiteColor], 
NSFontAttributeName: [UIFont fontWithName:@"AvenirNext-DemiBold" size:17.0] 
}]; 

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; 

} 

anche nel mio info.plist ho impostato: a base di controller della vista barra di stato l'aspetto a "NO"

Tutto ha funzionato grande e tutti i controller dentro la mia applicazione hanno le loro barre di stato con sfondo blu e il colore del testo bianco. Ma non il controller di uisearch e il controller di ricerca di uisearch.

mio TableViewController radice simile a questa:

https://www.dropbox.com/s/oqcozos89x9yqhg/Screen%20Shot%202014-12-11%20at%2016.21.06.jpg?dl=0

ho integrato searchController e searchResultsController nella mia app. La logica funziona bene, ma non capisco come gestire l'aspetto della barra di stato all'interno di searchController e searchResultController. Non usano gli stili per la barra di stato che ho creato nel mio file AppDelegate.m.

Il mio searchController e searchResultsController appaiono come questo (la barra di stato è diventata bianca e il colore del testo della barra di stato è diventato bianco, ma ho bisogno della barra di stato dello stesso colore del mio controller Home View (sfondo blu e colore del testo bianco .)

https://www.dropbox.com/s/26skdz7gvehmwl4/Screen%20Shot%202014-12-11%20at%2016.21.16.png?dl=0

altro bug: Quando uso

navigationController.navigationBar.translucent = NO; 

nel mio AppDelegate - provoca "saltando o stiramento down" della mia casa tablevi ew al momento di tornare indietro dal controller della vista di dettaglio dopo aver usato il controller di ricerca. Quando non si imposta la proprietà traslucida, non c'è "salto".

Forse qualcuno sa come risolvere i problemi che i colori della barra di stato quando si utilizza searchController in iOS 8.

Se uso i colori predefiniti (non aggiungere alcuna modifica al mio AppDelegate), tutto funziona bene, ma Ho bisogno dei colori personalizzati della barra di stato nella mia app.

+0

si tratta di un bug. vedere la mia soluzione alternativa: http: // StackOverflow.it/a/30225864/235297 –

risposta

0

Se si desidera testo bianco nella barra di stato, all'interno del vostro info.plist assicurarsi di avere Status bar style insieme a Opaque black style o Transparent black style.

Questo dovrebbe funzionare con il resto del codice.

6

Sarà necessario sottoclasse UISearchController e sovrascrivere preferredStatusBarStyle in questo modo:

- (UIStatusBarStyle)preferredStatusBarStyle 
{ 
    return UIStatusBarStyleLightContent; 
} 
+1

Se tutto ciò che si aggiunge alla sottoclasse UISearchController, si potrebbe anche considerare di aggiungere 'preferredStatusBarStyle' come un'estensione. – MathewS

+4

Sì, lavori di ampliamento '' 'estensione UISearchController! { \t public override func preferredStatusBarStyle() -> UIStatusBarStyle { \t \t ritorno .LightContent \t}} ' '' –