iOS 8.3 modalPresentationStyle OverCurrentContext не наследует внешний вид и видимость строки состояния

Рассмотрим следующую схему:

  • У вас есть простое приложение с одним подклассом UINavigationController и одним подклассом UIViewController.
  • UINavigationController переопределяет метод preferredStatusBarStyle() и возвращает UIStatusBarStyle.LightContent
  • UIViewController переопределяет метод prefersStatusBarHidden() и возвращает true

В iOS 8.0–8.2, когда другой UINavigationController (с другим UIViewController, который ничего не отменяет) представлен с modalPresentationStyle, установленным в UIModalPresentationStyle.OverCurrentContext, вновь представленный контроллер наследует внешний вид и видимость строки состояния.

Но в iOS 8.3 точно такая же ситуация - недавно представленный контроллер не наследует внешний вид и видимость строки состояния.

Другой пример - представить экземпляр UIImagePickerController - то же самое происходит и с внешним видом строки состояния.

Вопросы следующие:

  • Почему в iOS 8.3 недавно представленный контроллер не наследует внешний вид строки состояния?
  • Что было изменено (мне не удалось найти какой-либо значимой ссылки в различиях API iOS 8.2–8.3 по этому поводу)?
  • Есть ли какое-нибудь элегантное решение для этого, вместо того, чтобы везде переопределять методы внешнего вида и видимости?

person KoCMoHaBTa    schedule 21.04.2015    source источник


Ответы (1)


Попробуй это:

(viewControllerToBePresented).modalPresentationCapturesStatusBarAppearance = true
person Fabio    schedule 11.05.2016
comment
Это не влияет на iOS 8.3+, но вместо этого заставляет iOS 8.2- вести себя проблемно, как iOS 8.3+. - person KoCMoHaBTa; 11.05.2016