2016-11-03 43 views
0

我创建了一个配置管理器来更新UI设置而无需重新启动。大多数设置你可以强制重画,但它似乎更多限制与标签栏。Swift:动态刷新选项卡栏背景颜色

我用下面的内我UITabBarController更新标签栏时,我收到了配置变更通知(注:这可能是viewDidLoad之后的任何时间):

self.tabBar.backgroundColor = tabBarBackgroundColour 

这不更新的颜色,而是5只后约-10秒。

我试过各种方法来强制更新使用setNeedsLayoutsetNeedsDisplay在标签栏和视图,但没有一个工作。

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

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

我也试着更新个人标签栏项目,我看到更新的图像时,其他人都有过类似的问题,但无济于事。

+1

你确定你正在更新主线程的颜色吗?我记得,如果你从后台线程更新UI,它有时会延迟绘制... – JohnnyAW

回答

0

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

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