Проблемы с кнопками панели навигации Xcode 11.4 - PullRequest
0 голосов
/ 27 марта 2020

После обновления до Xcode 11.4 я столкнулся с проблемой, которую я не могу понять, как изменить цвет стрелки назад на панели навигации.

Прежде чем я смог просто использовать:

navigationBar.barTintColor = DisplayUtils.sweetGreenColor()

Однако, 11.4 заставил меня использовать функциональность standardAppearance , чтобы установить цвет моей панели навигации и всего остального. Что не составляет большого труда, это работает для установки barTint и цветов заголовка:

navigationBar.standardAppearance.backgroundColor = DisplayUtils.sweetGreenColor()

let buttonAppearance = UIBarButtonItemAppearance()
buttonAppearance.normal.titleTextAttributes = [.foregroundColor : DisplayUtils.whiteColor()]
navigationBar.standardAppearance.buttonAppearance = buttonAppearance

navigationBar.standardAppearance.titleTextAttributes = [NSAttributedString.Key.foregroundColor: DisplayUtils.whiteColor(), NSAttributedString.Key.font: UIFont(name: "Roboto-Bold", size: 18) as Any]

Я просто не вижу свойства, которое заменило barTintColor в UIBarButtonItemAppearance . Позволяет изменить цвет текста, изменить само изображение, но без свойства цвета.

Ответы [ 2 ]

0 голосов
/ 31 марта 2020

На раскадровке для вашего контроллера навигации измените «Bar Tint» на значение «Default», затем в своем коде вы можете изменить его, как обычно.

Программно просто сначала измените панель навигации цвет по умолчанию, то вы можете обновить то, что вы уже делаете.

    if #available(iOS 13.0, *) {
        self.navigationController?.navigationBar.standardAppearance.configureWithDefaultBackground()
    }
0 голосов
/ 27 марта 2020

Я нашел решение, которое работает в моем случае. Это работает, потому что я создаю мои viewControllers в коде, таком как:

if let stbrd = self.storyboard {
   if let vc: ViewController = stbrd.instantiateViewController(withIdentifier: "VC") as? ViewController {
                self.navigationItem.backBarButtonItem = UIBarButtonItem(title: " ", style: .plain, target: nil, action: nil) // remove back button text
                self.navigationItem.backBarButtonItem?.tintColor = DisplayUtils.sweetGreenColor()
                self.navigationController?.pushViewController(vc, animated: true)
   }
}

Это строка:

self.navigationItem.backBarButtonItem?.tintColor = DisplayUtils.sweetGreenColor()

, которая правильно устанавливает цвет стрелки назад на недавно представленном представлении контроллер.

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

...