Невозможно изменить цвет оттенка панели навигации в Swift 5 - PullRequest
0 голосов
/ 09 мая 2020

У меня было несколько экранов, и все они находились под управлением контроллера навигации, который был добавлен с помощью Editor -> Embed In - > Navigation Controller.

Для этого контроллера навигации установлен цвет оттенка полосы, равный оранжевому. Таким образом, у каждого экрана есть оранжевая верхняя полоса. Пока все хорошо.

Но один из экранов особенный. Ему необходимо динамически изменять цвет Bar Tint в соответствии с определенным внутренним состоянием приложения.

До сих пор я пробовал следующий метод, но безрезультатно. Цвет полосы остается оранжевым. Обратите внимание, что это было из принятых ответов на предыдущие подобные вопросы, заданные здесь. Также обратите внимание, что ответ был старше 2 лет. Поэтому я начал задаваться вопросом, может быть, теперь есть новый синтаксис для Swift 5?

override func viewDidLoad() {
        super.viewDidLoad()

        navigationController?.navigationBar.barTintColor = .red
    }

Любая помощь будет принята с благодарностью!

Ответы [ 2 ]

2 голосов
/ 09 мая 2020

В iOS 13 для этого используется backgroundColor из standardAppearance.

  • Чтобы установить оранжевый цвет в целом, установите standardAppearance из панель навигации.

  • Чтобы установить красный цвет только для одного контроллера представления, установите standardAppearance элемента навигации этого контроллера представления.

enter image description here

0 голосов
/ 10 мая 2020
override func viewDidLoad() {
    super.viewDidLoad()

    let navBarAppearance = UINavigationBarAppearance()
    navBarAppearance.backgroundColor = .red
    self.navigationItem.standardAppearance = navBarAppearance
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...