Есть ли способ изменить цвет фона UINavigationBar в Swift 4 - PullRequest
0 голосов
/ 04 сентября 2018

Как видно из названия, мне интересно, есть ли способ изменить цвет фона UINavigationBar в Swift. Я знаю, что этот вопрос задавался однажды, когда я нашел этот вопрос здесь , но я не смог заставить работать какой-либо код, когда попытался обновить его. Я связал пользовательский класс, который является подклассом UINavigationController. В настоящее время цвет фона у всех дочерних UINavigationItem по умолчанию имеет слегка окрашенный белый цвет. Я хочу иметь возможность изменить их цвет, чтобы соответствовать остальным элементам пользовательского интерфейса в моем приложении, так как большинство из них очень темные, поэтому я пытаюсь изменить это ниже, есть изображение того, что я пытаюсь воспроизвести.

enter image description here

Есть ли более новый способ сделать это? Возможно использование Определяемые пользователем атрибуты времени выполнения . У меня нет идей.

Я пробовал

@objc func changebarColor(){
        self.navigationController?.navigationBar.barTintColor = UIColor.red;
}

    override func viewDidLoad() {
        super.viewDidLoad()
        changebarColor()


}

И

override func viewDidLoad() {
        super.viewDidLoad()
        self.navigationController?.navigationBar.barStyle = UIBarStyle.blackTranslucent

        self.navigationController?.navigationBar.barTintColor  = UIColor.red;

}

И

override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationController!.navigationBar .setBackgroundImage(UIImage(), for: UIBarMetrics.default)
    self.navigationController!.navigationBar.shadowImage = UIImage();
    self.navigationController!.navigationBar.isTranslucent = true;
    self.navigationController!.navigationBar.backgroundColor = UIColor.red;
}

А также все остальные ответы, размещенные на странице. Немного подправив их, чтобы убрать ошибки.

1 Ответ

0 голосов
/ 04 сентября 2018

Вы на правильном пути, но вы называете это не в том месте. Вы должны переместить его на viewWillAppear, который вызывается каждый раз, когда вы просматриваете, будет отображаться viewDidLoad() вызывается только один раз.

Это означает, что другой контроллер представления или даже ОС могут изменить цвет панели навигации после viewDidLoad()

override func viewWillAppear(_ animated:Bool) 
{
    super.viewWillAppear( animated)
    self.navigationController?.navigationBar.barTintColor  = UIColor.red
}

Кроме того, вам не нужны точки с запятой в Swift.

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