Created
September 6, 2019 07:15
-
-
Save amirhanov/024840204adebdbd89b28bc69f38026c to your computer and use it in GitHub Desktop.
Как изменить цвет StatusBar во всем приложении и на одном ViewController с помощью statusBarStyle.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Всем привет! | |
Сегодня мы научимся изменять цвет 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
а как таким же образом, менять цвета фона у status bar для опредлененных vc?