Я пытаюсь изменить стиль строки состояния на .Light
, но предыдущий код, который я реализовал в swift 1.2, кажется, больше не работает.. вот код:
override func viewDidLoad() {
super.viewDidLoad()
UIApplication.sharedApplication().statusBarStyle = .LightContent
}
теперь у меня есть параметр View controller-based status bar appearance
info.plist для YES и чтение документа UIKit, это отрицает любые изменения statusBarStyle и сохраняет его по умолчанию. Однако, когда я меняю настройку на "НЕТ" и меняю statusBarStyle, я получаю этот <Error>: CGContextSaveGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable
в своем отладчике. Так это ошибка в Xcode? потому что для изменения стиля строки состояния вы должны изменить настройку info.plist на NO, но когда это произойдет.. ошибка
Ответ 1
Apple добавила возможность изменения стиля строки состояния в информации о развертывании. Просто выберите "Свет". ![ScreenShot of Xcode]()
Также установите View controller-based status bar appearance
на NO
в Info.plist
![info plist]()
Ответ 2
Я всегда так делал.
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
//Changing Status Bar
override func preferredStatusBarStyle() -> UIStatusBarStyle {
//LightContent
return UIStatusBarStyle.LightContent
//Default
//return UIStatusBarStyle.Default
}
}
Он работает в любой версии SWIFT 2.x. Для этого вам необходимо установить View controller-based status bar appearance
в Info.plist
файл YES
.
Ответ 3
Вы можете использовать preferredStatusBarStyle
в своем контроллере вида:
шаг 1: в файле info.plist установите ViewControllerBasedStatusBarAppearance на YES.
Шаг 2: добавьте этот код в ViewController, который вы хотите изменить:
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent
}
*** Совет. Он работает только за пределами функций ViewDidLoad(), didReceiveMemoryWarning().
Ответ 4
Изменение информации о развертывании работает, но, несмотря на это, вам нужно добавить
"Просмотреть внешний вид строки состояния на основе контроллера", чтобы файл plist установил значение НЕТ.
Ответ 5
Swift 3 просто добавьте View controller-based status bar appearance
со значением NO
в info.plist
, а затем добавьте в ViewController
, где хотите:
UIApplication.shared.statusBarStyle = UIStatusBarStyle.lightContent
Ответ 6
Вы также можете добавить это в AppDelegate. Этот вариант лучше, если вы хотите изменить его для каждого ViewController в приложении и не должны делать его другим для любого другого VC.
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
application.statusBarStyle = UIStatusBarStyle.LightContent
// instead of
// UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: false)
// which gives warning about deprecation in iOS 9
return true
}
Ответ 7
Похоже, что это ошибка в Xcode 7.0. Я также получаю ошибку Error>: CGContextSaveGState: invalid context 0x0.
при настройке View controller-based status bar appearance
Теперь я просто переопределяю цвет строки состояния в каждом контроллере представления.
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return .LightContent
}
Ответ 8
Вы можете выбрать "свет" в информации о развертывании, но тогда вам также необходимо добавить "Просмотр состояния панели управления на основе контроллера" и установить его в положение "Нет".
Ответ 9
Здесь попробуйте это, это может помочь вам
Сначала перейдите в файл info.plist и добавьте этот "Просмотр строки состояния на основе контроллера" в качестве ключа и установите значение как NO
здесь, как показано на рисунке ![введите описание изображения здесь]()
после этого зайдите в файл AppDelegate.swift и пропустите эту строку UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent
кода в
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool{
UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent
return true
}
как это
Ответ 10
Для быстрого 3 переопределения предпочтительной переменнойStatusBarStyle используйте это:
override var preferredStatusBarStyle: UIStatusBarStyle{
return .lightContent
}
Ответ 11
Существующие ответы великолепны, но теперь это немного отличается от новых обновлений!
override var
теперь вместо override func
для всех запутанных - суть все та же, и вам все равно нужно изменить свой "Info.plist":
override var preferredStatusBarStyle: UIStatusBarStyle
{
//LightContent
return UIStatusBarStyle.lightContent
//Default
//return UIStatusBarStyle.default
}
Ответ 12
Если вы хотите время от времени менять его в своем приложении, вы можете использовать переопределения preferredStatusBarStyle()
, как упоминалось ранее.
Просто убедитесь, что вы также вызываете setNeedsStatusBarAppearanceUpdate()
после вызова preferredStatusBarStyle()
, чтобы сообщить об этом IOS.