Прочитав все предложения и попробовав несколько вещей, я мог заставить это работать для определенных контроллеров представления, используя следующие шаги:
Первый шаг:
Откройте ваш info.plist и вставьте новый ключ с именем « Показать внешний вид строки состояния на основе контроллера », чтобы НЕТ
Второй шаг (просто объяснение, нет необходимости реализовывать это):
Обычно мы помещаем следующий код в приложение (_: didFinishLaunchingWithOptions :) метод AppDelegate,
Swift 2
UIApplication.sharedApplication().statusBarStyle = .LightContent
Swift 3
UIApplication.shared.statusBarStyle = .lightContent
но это влияет на statusBarStyle
все ViewControllers.
Итак, как заставить это работать для определенных ViewControllers - последний шаг:
Откройте файл viewcontroller, где вы хотите изменить statusBarStyle
и вставьте следующий код viewWillAppear()
,
Swift 2
UIApplication.sharedApplication().statusBarStyle = .LightContent
Swift 3
UIApplication.shared.statusBarStyle = .lightContent
Кроме того, реализуйте viewWillDisappear()
метод для этого конкретного viewController и поместите следующие строки кода,
Swift 2
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated)
UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.Default
}
Swift 3
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
UIApplication.shared.statusBarStyle = UIStatusBarStyle.default
}
Этот шаг сначала изменит statusBarStyle
конкретный viewcontroller, а затем вернет его обратно, default
когда конкретный viewcontroller исчезнет. Не выполнение viewWillDisappear()
будет statusBarStyle
постоянно менять на новое определенное значениеUIStatusBarStyle.LightContent
Status bar is initially hidden = YES
в файле info.plist, «Просмотр строки состояния на основе контроллера = НЕТ» вызовет скрытие строки состояния.