Я недавно обновил свой Xcode до 11.4. Когда я запустил приложение на устройстве, я заметил, что заголовки всех элементов навигации стали полностью черными при установке из раскадровки.
Вы не можете изменить ни один из кодов, следующая строка кода больше не работает
self.navigationController?.navigationBar.titleTextAttributes = [.foregroundColor: UIColor.white]
Я только заставляю это работать, используя некоторые вещи iOS 13 UINavigationBarAppearance
@available(iOS 13.0, *)
private func setupNavigationBar() {
let app = UINavigationBarAppearance()
app.titleTextAttributes = [.foregroundColor: UIColor.white]
app.backgroundColor = Constants.Color.barColor
self.navigationController?.navigationBar.compactAppearance = app
self.navigationController?.navigationBar.standardAppearance = app
self.navigationController?.navigationBar.scrollEdgeAppearance = app
self.navigationController?.navigationBar.titleTextAttributes = [.foregroundColor: UIColor.white]
}
Может кто-нибудь объяснить мне, почему ??? Это критическая ошибка или какая-то новая скрытая функция?
ios
swift
xcode
navigationbar
Тудор Попа
источник
источник
Ответы:
Apple наконец исправила это в версии 11.4.1
https://developer.apple.com/documentation/xcode_release_notes/xcode_11_4_1_release_notes
источник
Это исправило это для меня, используя вместо этого UINavigationBarAppearance из: Настройка панели навигации вашего приложения
Примечание. Я вложил в класс UINavigationController , и он был вызван из переопределения viewWillAppear .
... или для AppDelegate , для всего приложения:
... для AppDelegate, для всего приложения, в Objective-C:
источник
UINavigationBarAppearance()
и без всякой причины на старом Xcode мы не должны были зависеть от него, но, поскольку Xcode 11.4 должен использовать его,UINavigationBarAppearance()
или цвет заголовка всегда будет черным.appearance.largeTitleTextAttributes
для больших названий.На раскадровке для вашего контроллера навигации измените «Bar Tint» на значение «Default», затем в своем коде вы можете изменить его, как обычно.
источник
Не уверен, что это ошибка или нет.
Мы исправили это, установив «Стиль строки состояния» на темное или светлое содержимое в настройках проекта. Это заставит цвет текста строки состояния определенным образом, а не будет определяться на основе устройств, находящихся в режиме «Светлый» или «Темный».
Кроме того, вам нужно установить значение «Просмотр внешнего вида строки состояния на основе контроллера» на «НЕТ» в вашем Info.plist. без этого значения «Стиль строки состояния» будет переопределен.
Затем создайте пользовательский контроллер навигации и внедрите его в свои раскадровки.
* Цвета установлены так, чтобы вы могли видеть их четко работающими.
Я обнаружил, что лучше установить код в ViewDidLoad, а не в ViewDidAppear, потому что мои цвета не устанавливались при первоначальной загрузке, только после перехода назад и перезагрузки.
Я также обнаружил, что эта проблема может быть связана с «Bar Tint» NavBar. когда мы впервые пытались ее решить, мы установили «Bar Tint» на значение по умолчанию, и это, похоже, тоже разрешило ошибку. Тем не менее, он сделал это так, что мы не смогли получить цвет фона NavBar, что мы хотели. Поэтому в своих раскадровках я позаботился о том, чтобы установить это значение по умолчанию просто для хорошей меры.
Надеюсь, поможет
источник
нет необходимости в workaround.it - это ошибка в Xcode Interface Builder. Apple выпустила обновление для Xcode 11.4.1
из заметок о выпуске разработчика Apple
https://developer.apple.com/documentation/xcode_release_notes/xcode_11_4_1_release_notes
источник
По аналогии с ответом Стю Карни 3/25, я добавил еще несколько деталей реализации.
Создайте подкласс UINavigationController . Добавьте следующее к viewWillAppear:
Затем переопределите предпочитаемое значение StatusBarStyle :
Если вы хотите динамически обновлять панель навигации и строку состояния, например, с помощью IBAction или метода селектора UISwitch, добавьте следующее:
Кроме того, обязательно установите все свои панели навигации и кнопки панели в цвета по умолчанию в IB. Кажется, в Xcode есть ошибка, когда цвета IB перекрывают цвета, установленные программно.
источник
В моем случае, после того, как я обновил Xcode с 11.3 до 11.4, эта ошибка произошла. Поэтому я должен изменить свой код, чтобы выдуть, чтобы установить изображение в качестве фона на панели навигации.
источник