Перезагрузка отображения панели вкладок

Итак, поскольку многие программисты используют узел. прецедент, который отвечает этому вопросу, заключается в исключении node_modules, за исключением одного модуля module-a, например:

!node_modules/

node_modules/*
!node_modules/module-a/
0
задан rmaddy 13 July 2018 в 17:57
поделиться

2 ответа

Если вы попытаетесь просмотреть docs около UIAppearance, вы увидите примечание:

iOS применяет изменения внешнего вида, когда представление входит в окно, он не меняет внешний вид представления, которое уже находится в окне. Чтобы изменить внешний вид представления, находящегося в данный момент в окне, удалите представление из иерархии представления и верните его.

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

guard let currentView = (UIApplication.shared.delegate as? AppDelegate)?.window?.rootViewController?.view,
    let superview = currentView.superview else { return }

UITabBar.appearance().tintColor = .green

currentView.removeFromSuperview()
superview.addSubview(currentView)
1
ответ дан pacification 17 August 2018 в 12:18
поделиться
  • 1
    Отлично! Спасибо огромное! Я не рассматривал удаление корневого представления и повторное добавление его, которое теперь кажется довольно очевидным. Еще раз спасибо! – Omar 15 July 2018 в 09:43

Вы можете просто установить цвет вашего tabBar с помощью функции tabBar.backgroundColor -property:

self?.tabBar.backgroundColor

Пожалуйста, убедитесь, что вы обновляете цвет фона в основном потоке.

DispatchQueue.main.async { [weak self] in
   self?.tabBar.backgroundColor = newAppearanceColor
}
0
ответ дан jonas00 17 August 2018 в 12:18
поделиться
  • 1
    Спасибо, но проблема в том, что я не перезагрузил панель вкладок в корневом представлении (см. Ответ выше). Спасибо, что подумал! – Omar 15 July 2018 в 09:37