Я пытаюсь реализовать селектор цветовой темы в своем приложении. Последнее препятствие, которое я пытаюсь преодолеть, - это динамическое изменение цвета моей UINavigationBar. В настоящее время моя функция по изменению цвета работает, но она вступает в силу только тогда, когда приложение было перезапущено из закрытого состояния.
Мой root контроллер представления устанавливает начальное состояние UINavigationBar следующим образом:
struct MyRootView: View {
init() {
UINavigationBar.appearance().backgroundColor = getPreferredThemeColour()
UINavigationBar.appearance().largeTitleTextAttributes = [
.foregroundColor: UIColor.white]
}
var body: some View {
...
getPreferredThemeColour () просто возвращает желаемый UIColour из UserDefaults
В моем селекторе темы есть кнопки, которые изменяют атрибуты цвета следующим образом:
Button(action: {
UserDefaults.standard.set(UIColor.blue, forKey: "theme")
UINavigationBar.appearance().backgroundColor = UIColor.blue }) {
Я не могу кажется, нашел способ обновить sh UINavigationBar «на лету», чтобы отразить сделанные изменения. Приложение всегда необходимо перезапускать.
Любая помощь будет очень признательна !!!! Спасибо.