Swift:动态刷新标签栏背景颜色

时间:2016-11-03 11:44:20

标签: ios swift uitabbarcontroller

我已经创建了一个配置管理器来更新UI设置而无需重新启动。大多数设置都可以强制重绘,但标签栏似乎更有限。

当我收到配置更改通知时,我会使用以下内容更新UITabBarController中的标签栏(注意:这可能是viewDidLoad之后的任何时间):

self.tabBar.backgroundColor = tabBarBackgroundColour

这确实会更新颜色,但仅在约5-10秒后更新。

我尝试了各种方法在标签栏和视图上使用setNeedsLayoutsetNeedsDisplay强制进行更新,但这些方法都不起作用。

self.tabBar.setNeedsLayout()
self.tabBar.setNeedsDisplay()

self.view.setNeedsLayout()
self.view.setNeedsDisplay()

我也尝试更新单个标签栏项目,因为我看到其他人在更新图片时遇到类似问题但无济于事。

1 个答案:

答案 0 :(得分:0)

确保您正在更新主线程上的背景颜色。

   DispatchQueue.main.async { [weak self] in
     self?.tabBar.backgroundColor = tabBarBackgroundColour
   }