我正在使用一个iOS应用程序,该应用程序允许用户更改主要色的颜色。当用户选择强调色时,需要更新所有当前显示的包含强调色的元素。我有一个解决方案,除了导航栏的后退按钮文字外,它适用于所有情况。我可以更改标题文本的颜色,左克拉按预期的颜色进行更改。
当我使用以下代码时,左克拉会立即更改,但旁边的文本不会更改。
self.navigationController?.navigationBar.tintColor = accentColor
self.navigationController?.navigationBar.barTintColor = navBarColor
self.navigationController?.navigationBar.titleTextAttributes = [
NSAttributedStringKey.foregroundColor: anotherColor,
NSAttributedStringKey.font: someFont
];
此外,在上述代码之前,UIBarButtonItem的UIAppearance代理设置了titleTextAttributes,但不适用于已显示的视图。
我在这里想念什么?如果视图完全关闭并重新加载,则后退按钮文本将使用tintColor。有没有一种方法,而无需添加自定义backBarButtonItem?
iOS 9+-敏捷的解决方案受到赞赏,但objc也很好。该应用程序的这一部分是基于情节提要的。
编辑:更新了代码和说明。
更新:iOS 11.2和10.3之间的行为不同。在iOS 11.2中,左右栏按钮的文本颜色不会根据堆栈中任何视图的色调进行更新,直到重新加载它们为止。在iOS 10.3中,颜色会更新,但不会更改可见视图。