本文介绍了UITabBarController: UITabBarItem 更新它或重新加载它的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何更新或重新加载 UITabBarItem 上的文本颜色?
How do I update or reload the text color on the UITabBarItem?
它会,只有当我杀死应用程序并重新打开时.然后它会刷新 UITabBarItem 上的 textColor
Swift 5.1,iOS 12
func handleRefreshForTabBar() {
DispatchQueue.main.async {
//Background
self.view.backgroundColor = Theme.current.generalBackground
//Images
self.tabBar.tintColor = Theme.current.tabTintColor
//Bar
self.tabBar.barTintColor = Theme.current.tabBarTintColor
}
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
handleRefreshForTabBar()
UITabBarItem.appearance().setTitleTextAttributes([NSAttributedString.Key.foregroundColor: Theme.current.tabBarSelectedTextColor], for: .selected)
UITabBarItem.appearance().setTitleTextAttributes([NSAttributedString.Key.foregroundColor: Theme.current.tabBarNormalTextColor], for: .normal)
}
我尝试过的选项
tabBar.setNeedsDisplay()
tabBar.setNeedsLayout()
view.reloadInputViews()
view.setNeedDisplay()
view.setNeedsLayout()
我的 TabBar 是我的 rootVC
推荐答案
/// Function that makes the tab bar refresh itself. Specially important for refreshing light or dark mode styles
func handleRefreshForTabBar() {
DispatchQueue.main.async {
//Set up the same color as the NavBar to avoid bugs
self.view.backgroundColor = Theme.current.generalBackground
//Images
self.tabBar.tintColor = Theme.current.tabTintColor
//Bar
self.tabBar.barTintColor = Theme.current.tabBarTintColor
self.tabBar.items!.forEach { (item) in
item.setTitleTextAttributes([NSAttributedString.Key.foregroundColor: Theme.current.tabBarSelectedTextColor], for: .selected)
item.setTitleTextAttributes([NSAttributedString.Key.foregroundColor: Theme.current.tabBarNormalTextColor], for: .normal)
}
}
}
这篇关于UITabBarController: UITabBarItem 更新它或重新加载它的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!