Как изменить цвет строки состояния второго UIWindow? - PullRequest
0 голосов
/ 17 октября 2019

Я добавил второе окно в моем приложении для представления конкретного контроллера, когда пользователь нажимает на удаленное push-уведомление.

func navigateThroughPushnotification(controller: UINavigationController) {
    let window = UIWindow(frame: UIScreen.main.bounds)
    let vc = UIViewController()
    vc.view.backgroundColor = .clear
    window.rootViewController = vc
    window.windowLevel = UIWindow.Level.alert + 1
    window.makeKeyAndVisible()
    if let statusBar = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView {
        statusBar.backgroundColor = kAppDefaultColor
    }
    vc.present(controller, animated: true, completion: nil)
}

Проблема в том, что я хочу изменить цвет строки состояния этого окна, нокод, который я использовал для изменения цвета моего главного окна, на этот раз не работает.

guard let statusBar = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView else { return true }
    statusBar.backgroundColor = kAppDefaultColor

Теперь этот код очень хорошо работает для главного окна. Пожалуйста, кто-нибудь, помогите определить, что нужно сделать, чтобы изменить цвет второго окна. Заранее спасибо

1 Ответ

0 голосов
/ 17 октября 2019

Используется только для iOS 7 и более поздних версий.

Прежде всего, перейдите в Info.plist вашего приложения, установите для параметра Просмотр строки состояния на основе контроллера значение YES.

после переопределения extendedStatusBarStyle в каждом из ваших контроллеров представления.

например:

override var preferredStatusBarStyle: UIStatusBarStyle {     
      return .lightContent
}

Если у вас есть preferredStatusBarStyle, возвращающий другой предпочтительный стиль строки состояния, основанный на чем-то, что изменяется внутри вашего контроллера представления, тогда вы хотитедля вызова setNeedsStatusBarAppearanceUpdate() при изменении состояния.

...