更改应用程序主题时更改 UITabbar?
Changing UITabbar when the app theme is being changed?
我想为一个应用程序支持 2 个主题。一光一暗。所以,我有一个 UIButton
允许用户点击它并在浅色和深色主题之间切换。
UITabBar
有自己的 class,我已将其设置为根据当前主题进行相应更改,但它不起作用。不确定我做错了什么。
class MainTabbar: UITabBarController {
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.tabBar.barTintColor = Theme.current.tabbarTintColor
self.tabBar.tintColor = Theme.current.tabbarSelectedItems
self.tabBar.unselectedItemTintColor = Theme.current.tabbarUnselectedItemsColor
}
}
在AppDelegate
文件中,我检查是否有选择的主题,如果没有,设置LightTheme
。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Set Theme
if UserDefaults.standard.object(forKey: SelectedThemeKey) != nil {
Theme.current = UserDefaults.standard.bool(forKey: SelectedThemeKey) ? LightTheme() : DarkTheme()
print("current theme is: \(Theme.current)")
}
}
截至目前,它只会更改 UITabbar
如果应用程序正在重新启动的颜色。
更改应用主题后,您需要在任何选项卡内的任何位置访问这些内容
self.tabBarController.tabBar.barTintColor = Theme.current.tabbarTintColor
self.tabBarController.tabBar.tintColor = Theme.current.tabbarSelectedItems
self.tabBarController.tabBar.unselectedItemTintColor = Theme.current.tabbarUnselectedItemsColor
//
或者如果根是 tabController
let tab = UIApplication.shared.keyWindow?.rootViewController as! UITabBarController
我想为一个应用程序支持 2 个主题。一光一暗。所以,我有一个 UIButton
允许用户点击它并在浅色和深色主题之间切换。
UITabBar
有自己的 class,我已将其设置为根据当前主题进行相应更改,但它不起作用。不确定我做错了什么。
class MainTabbar: UITabBarController {
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.tabBar.barTintColor = Theme.current.tabbarTintColor
self.tabBar.tintColor = Theme.current.tabbarSelectedItems
self.tabBar.unselectedItemTintColor = Theme.current.tabbarUnselectedItemsColor
}
}
在AppDelegate
文件中,我检查是否有选择的主题,如果没有,设置LightTheme
。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Set Theme
if UserDefaults.standard.object(forKey: SelectedThemeKey) != nil {
Theme.current = UserDefaults.standard.bool(forKey: SelectedThemeKey) ? LightTheme() : DarkTheme()
print("current theme is: \(Theme.current)")
}
}
截至目前,它只会更改 UITabbar
如果应用程序正在重新启动的颜色。
更改应用主题后,您需要在任何选项卡内的任何位置访问这些内容
self.tabBarController.tabBar.barTintColor = Theme.current.tabbarTintColor
self.tabBarController.tabBar.tintColor = Theme.current.tabbarSelectedItems
self.tabBarController.tabBar.unselectedItemTintColor = Theme.current.tabbarUnselectedItemsColor
//
或者如果根是 tabController
let tab = UIApplication.shared.keyWindow?.rootViewController as! UITabBarController