ПредпочитаемыйStatusBarStyle никогда не вызывался

Моя иерархия контроллеров представления - SWRevealViewController -> UINavigationViewController -> MyController1. MyController1 представляет MyController2 с использованием self.present. MyController2 находится за пределами UINavigationViewController, и представление является модальным (устройство - iPhone). В viewWillAppear из MyController2 я вызываю self.setNeedsStatusBarAppearanceUpdate(), но preferredStatusBarStyle никогда не вызывается системой, и внешний вид строки состояния остается таким же (как это было для MyViewController1). Я что-то упустил?

ИЗМЕНИТЬ

info.plist для параметра Отображение строки состояния на основе контроллера установлено значение YES


person peetonn    schedule 28.04.2017    source источник
comment
Возможный дубликат предпочтительногоStatusBarStyle не вызывается   -  person Nicolas Miari    schedule 28.04.2017
comment
да, я просмотрел всю ветку. ничего не помогло. мой контроллер не внутри UINavigationController, как я уже упоминал   -  person peetonn    schedule 28.04.2017


Ответы (3)


Вот что у меня сработало в моем ВК ...

self.modalPresentationCapturesStatusBarAppearance = true
person Jesse S.    schedule 12.04.2018
comment
Это влияет только при использовании неполноэкранных модальных стилей представления. - person Kyokook Hwang; 24.06.2020

в вашем info.plist

Просмотр внешнего вида строки состояния на основе контроллера. ДА

person elk_cloner    schedule 28.04.2017
comment
Спасибо! это спасло меня! - person Joon; 11.09.2017

Нашей проблемой был контейнер ВК.

Поэтому пришлось сказать ему, чтобы содержащийся (видимый) VC мог вызывать выстрелы:

final class ContainerVC: UIViewController {
  final var centerVC: UIViewController? // set to an OtherVC elsewhere

  override var childViewControllerForStatusBarHidden: UIViewController? {
    return centerVC
  }
  override var childViewControllerForStatusBarStyle: UIViewController? {
    return centerVC
  }
}

final class OtherVC: UIViewController {
  override var prefersStatusBarHidden: Bool {
    return true
  }
  override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
  }
  override var preferredStatusBarUpdateAnimation: UIStatusBarAnimation {
    return .slide
  }
}
person mcm    schedule 19.07.2017