Неизмененный 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 внешнего вида, вы должны получить изменения, которые вам нужны.