2015-04-21 12 views
5

Si consideri la seguente configurazione:iOS 8.3 modalPresentationStyle OverCurrentContext non eredita barra di stato l'aspetto e la visibilità

  • Hai una semplice applicazione con un singolo UINavigationController sottoclasse e un singolo UIViewController sottoclasse in esso.
  • L'UINavigationController sovrascrive preferredStatusBarStyle() metodo e restituisce UIStatusBarStyle.LightContent
  • L'UIViewController ignora prefersStatusBarHidden() metodo e restituisce true

In iOS 8,0-8,2 quando un altro UINavigationController (con un altro UIViewController che non esclude nulla) è presentato con la modalPresentationStyle impostato su UIModalPresentationStyle.OverCurrentContext, il controller appena presentato eredita l'aspetto e la visibilità della barra di stato.

Ma in iOS 8.3 nella stessa identica situazione - il regolatore di recente presentato non eredita la barra di stato l'aspetto e la visibilità

Un altro esempio potrebbe essere quello di presentare un'istanza di UIImagePickerController - la stessa cosa accade per quanto riguarda lo stato aspetto della barra.

Le domande sono:

  • Perché in iOS 8.3 il controller di recente presentato non eredita l'aspetto barra di stato?
  • Cosa è stato modificato (non sono riuscito a trovare alcun riferimento significativo nella differenza tra iOS 8.2 e 8.3 API in merito)?
  • C'è qualche soluzione elegante a questo, invece di sovrascrivere ovunque i metodi di visualizzazione e visibilità?

risposta

5

Prova che:

(viewControllerToBePresented).modalPresentationCapturesStatusBarAppearance = true 
+0

Ciò non ha alcun effetto su iOS 8.3+ ma invece rende iOS 8.2- a comportarsi in modo problematico come iOS 8.3+ – KoCMoHaBTa