Неизмененный barTintColor UINavigationBar на iOS 13.4

После обновления Xcode до версии 11.4 (11E146) в iOS 13.4 barTintColor изменяется только через раскадровку. В коде изменения игнорируются.

self.navigationController.navigationBar.barTintColor = UIColor.redColor;

Также проблема с цветом заголовка.

h ttps://i.stack.imgur.com/h5l8C.png

Исправлено в Xcode 11.4.1: https://i.stack.imgur.com/MWyws.png

3 ответа

Решение

У меня была такая же проблема, что исправило для меня следующее:

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

    // For the navigation bar
    navigationController?.navigationBar.barTintColor = .red

    // For the title
    let attributes = [NSAttributedString.Key.foregroundColor: UIColor.white ]
    navigationController?.navigationBar.titleTextAttributes = attributes

У меня есть код в viewDidLoad()

Как ни странно для меня, он также устранил проблему, с которой я столкнулся с "Строкой состояния".

Это была ошибка в Xcode 11.4. Исправление заключается в обновлении до Xcode 11.4.1.

Исправление специально указано в примечаниях к выпуску: https://developer.apple.com/documentation/xcode_release_notes/xcode_11_4_1_release_notes

Это было изменение, внесенное в то, как Xcode кодирует эти свойства для UINavigationBar - теперь они используют API UINavigationBarAppearance, представленный в iOS 13.

Если вы измените стандартный внешний вид UINavigationBar вместо использования старого API внешнего вида, вы должны получить изменения, которые вам нужны.

Другие вопросы по тегам