我已经创建了一个配置管理器来更新UI设置而无需重新启动。大多数设置都可以强制重绘,但标签栏似乎更有限。
当我收到配置更改通知时,我会使用以下内容更新UITabBarController
中的标签栏(注意:这可能是viewDidLoad
之后的任何时间):
self.tabBar.backgroundColor = tabBarBackgroundColour
这确实会更新颜色,但仅在约5-10秒后更新。
我尝试了各种方法在标签栏和视图上使用setNeedsLayout
和setNeedsDisplay
强制进行更新,但这些方法都不起作用。
self.tabBar.setNeedsLayout()
self.tabBar.setNeedsDisplay()
或
self.view.setNeedsLayout()
self.view.setNeedsDisplay()
我也尝试更新单个标签栏项目,因为我看到其他人在更新图片时遇到类似问题但无济于事。
答案 0 :(得分:0)
确保您正在更新主线程上的背景颜色。
DispatchQueue.main.async { [weak self] in
self?.tabBar.backgroundColor = tabBarBackgroundColour
}