Skip to content

Instantly share code, notes, and snippets.

@amirhanov
Created September 6, 2019 07:15
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save amirhanov/024840204adebdbd89b28bc69f38026c to your computer and use it in GitHub Desktop.
Save amirhanov/024840204adebdbd89b28bc69f38026c to your computer and use it in GitHub Desktop.
Как изменить цвет 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.
Благодарю за внимание!
@Ivan-Biriukov
Copy link

а как таким же образом, менять цвета фона у status bar для опредлененных vc?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment