Невозможно программно изменить цвет панели навигации NavigationController.navigationBar с помощью Swift 5 - PullRequest
0 голосов
/ 17 апреля 2020

В моем Main.storyboard У меня есть NavigationBar TintColor , установленный в по умолчанию .

В моем быстром Файл ниже у меня есть функция, где я пытаюсь обновить внешний вид нескольких элементов, таких как цвет панели поиска и цвет фона панели навигации. Изменение цвета для панели поиска работает, но цвет фона для панели навигации не работает.

Цвет фона для панели навигации должен основываться на цвете, выбранном в предыдущем View Controller, поэтому я касаюсь (selectedCategory?.color).

Использование print(navBarColour) Я подтвердил, что подбирается правильный / ожидаемый цвет, однако каким-то образом моя панель навигации по-прежнему показывает цвет по умолчанию.

Может кто-нибудь помочь, пожалуйста?

override func viewWillAppear(_ animated: Bool) {

        if let colourHex = selectedCategory?.colour {
            title = selectedCategory!.name
            guard  let navBar = navigationController?.navigationBar else {fatalError("Navigation does not exists.")}

            if let navBarColour = UIColor(hexString: colourHex) {

                navBar.barTintColor = navBarColour
                navBar.tintColor = ContrastColorOf(backgroundColor: navBarColour, returnFlat: true)
                navBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: ContrastColorOf(backgroundColor: navBarColour, returnFlat: true)]
                searchBar.barTintColor = navBarColour

                print(navBarColour)
            }
        }
    }

1 Ответ

0 голосов
/ 17 апреля 2020

Я могу изменить цвет фона панели навигации следующим образом:

bar.backgroundColor = .red

Это работает для меня. Следовательно, вы можете использовать свое значение цвета, убедитесь, что вы передаете правильное значение UIColor в этом свойстве. Я надеюсь, что это поможет решить вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...