2016-11-03 44 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 
    }