2016-11-03 6 views
0

Я создал диспетчер конфигурации, чтобы обновлять настройки пользовательского интерфейса без перезагрузки. В большинстве настроек вы можете просто перерисовать, но, по-видимому, он более ограничен с помощью панели вкладок.Swift: Обновить вкладку Цвет фона фона динамически

Я обновить панель вкладок в моих UITabBarController следующих, когда я получаю уведомление об изменении конфигурации (примечание: это может быть в любое время после viewDidLoad):

self.tabBar.backgroundColor = tabBarBackgroundColour 

Это обновление цвета, но только после того, как около 5 -10 секунд.

Я пробовал различные способы принудительного обновления с помощью setNeedsLayout и setNeedsDisplay как на панели вкладок, так и на представлении, но ни один из них не работает.

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

или

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

Я также попытался обновить отдельные вкладки штриховых элементов, как я вижу, другие люди имели подобные проблемы при обновлении изображения, но безрезультатно.

+1

Вы уверены, что вы обновляете цвет из основной темы? Я помню, что если вы обновляете интерфейс из фонового потока, он иногда затягивает ничью ... – JohnnyAW

ответ

0

Убедитесь, что вы обновляете цвет фона в основной теме.

DispatchQueue.main.async { [weak self] in 
    self?.tabBar.backgroundColor = tabBarBackgroundColour 
    } 
Смежные вопросы