2017-01-31 10 views
0

У меня View controller-based status bar appearance установлен в YES в моем Info.plist файле.Почему моя строка состояния не меняет предпочтительный стиль?

Контроллер вида, а не в стеке навигации, представлен через модальный переход. В нем, у меня есть следующее переопределение свойств для Swift 3/прошивки 10:

override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent } 

Тем не менее, в строке состояния сохраняющего по умолчания (темный) стиль. Однако, когда я печатаю preferredStatusBarStyle в viewDidLoad, я получаю rawValue от 1. Проверка documentation, 1 относится к .lightContent.

Я пытаюсь изменить стиль в строке состояния, чтобы .lightContent, поскольку представление содержит UIVisualEffectView с UIBlurEffectStyle значением dark.

Я что-то неправильно делаю?

ответ

-2

работа вокруг:

Изменение View controller-based status bar appearance к NO

self.setStatusBarStyle(.lightContent) 
self.setNeedsStatusBarAppearanceUpdate() 
2

Добавьте к этому модально представила контроллер представления:

override var modalPresentationCapturesStatusBarAppearance: Bool { 
    return true 
} 
+0

Я смог решить проблему с небольшой настройкой вашего решения. Кажется, что 'modalPresentationCapturesStatusBarAppearance' не является свойством, которое можно переопределить, поскольку оно изменено. Ошибки компиляции приведены в моем ответе. –

2

С помощью Мэтта answer, я был в состоянии решить мой вопрос. Я должен был использовать следующее viewDidLoad:

modalPresentationCapturesStatusBarAppearance = true 

Когда я попробовал решение Мэтта, я получил две ошибки компиляции: Cannot override mutable property with read-only property 'modalPresentationCapturesStatusBarAppearance' и Getter for 'modalPresentationCapturesStatusBarAppearance' with Objective-C selector 'modalPresentationCapturesStatusBarAppearance' conflicts with getter for 'modalPresentationCapturesStatusBarAppearance' from superclass 'UIViewController' with the same Objective-C selector

0
  1. Перейти к info.plist и установить UIViewControllerBasedStatusBarAppearance к ложной
  2. Перейти к AppDelegate.swift затем перейти к функции didFinishLaunchingWithOptions, установите цвет вы хотите, как показано ниже:

    UIApplication.shared.statusBarStyle = UIStatusBarStyle.lightContent

Пожалуйста, дайте мне знать, если это может помочь вам. Спасибо.

+0

Мне нужен только один контроллер вида, чтобы иметь световой индикатор состояния, поэтому настройка его для всего приложения не идеальна. Однако я смог найти решение, которое описано в моем ответе. –

+0

Спасибо, что сработало для меня – inzo