Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Как изменить цвет StatusBar во всем приложении и на одном ViewController с помощью statusBarStyle.
Всем привет!
Сегодня мы научимся изменять цвет StatusBar в целом приложении и для каждого контроллера в отдельности с помощью statusBarStyle. statusBarStyle, отвечает за стиль StatusBar и может иметь одно из двух значений, первое default - это темный стиль (черный цвет), второе lightContent - светлый стиль (белый цвет). Начнем с установки цвета StatusBar во всем проекте. Здесь есть два варианта, первый - самый простой:
1. Перейдите в настройки проекта.
2. Опуститесь в Deployment info и измените параметр Status Bar Style на нужный.
Это самый простой вариант изменения цвета во всем проекте, перейдем ко второму:
1. Перейдите в файл info.plist. Этот файл является списком свойств Вашего проекта.
2. Нажмите на плюс рядом с Information Property List, создайте новый ключ с именем View controller-based status bar appearance и установите ему значение NO.
3. Перейдите в файл AppDelegate. Файл AppDelegate - это файл с классом, который является точкой входа в приложение и управляет состоянием всего приложения.
4. Переходим в метод didFinishLaunchingWithOptions и с помощью statusBarStyle, который отвечает за текущий стиль строки состояния - задаем стиль, например светлый:
UIApplication.shared.statusBarStyle = .lightContent
Тем самым мы изменили цвет во всем проекте. Если же мы хотим задать стиль только одного или нескольких ViewController, то пойдем другим путем. Здесь есть два варианта, первый:
1. Повторяем пункты 1-2, которые описаны выше.
2. Переходим теперь не в AppDelegate, а в нужный нам ViewController и внутри класса создаем метод viewWillAppear. viewWillAppear - этот метод вызывается перед загрузкой фактического представления:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
}
3. Внутри метода с помощью того же statusBarStyle возвращаем нужный стиль, например светлый:
UIApplication.shared.statusBarStyle = .lightContent
Первый вариант готов, рассмотрим второй. Он заключается в использовании просто другого метода:
1. Повторяем пункты 1-2, которые описаны выше.
2. Переходим в нужный ViewController и реализуем метод preferredStatusBarStyle, который отвечает за приоритетный стиль StatusBar текущего ViewController:
override var preferredStatusBarStyle: UIStatusBarStyle {
}
3. Внутри возвращаем один из двух стилей:
return .lightContent
Готово! Мы рассмотрели несколько вариантов изменения цвета StatusBar. Если Вы хотите использовать светлый стиль только на одном ViewController, то я рекомендую еще создать метод viewWillDisappear, который вызывается когда представление уже загружено. Внутри верните стандартное значение statusBarStyle, а то при переходе на другой ViewController он сохранит стиль StatusBar предыдущего ViewController.
Благодарю за внимание!
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.