方式一:
// 设置item的选中状态的颜色,但是默认的颜色未设置,不符合要求
[[UITabBar appearance] setTintColor:[UIColor colorWithHexString:Tabbar_select_textColor]];
方式二:
// 别人推荐的方式:在添加controller的时候设置默认和选中的字体,其实在viewDidLoad中设置一次tabbar即可
[controller.tabBarItem setTitleTextAttributes:@{NSForegroundColorAttributeName:KColorWithHex(PrimaryBgColor)} forState:UIControlStateSelected];
[controller.tabBarItem setTitleTextAttributes:@{NSForegroundColorAttributeName:KColorWithHex(KColor_TextFirst)} forState:UIControlStateNormal];
这种方式在iOS13以下版本还是可以的,但是iOS13的效果如下,偶尔会出现字体变成系统蓝色的bug:
方式三:
// 方式三:适配iOS13
if (@available(iOS 13.0, *)) {
// iOS13 及以上
self.tabBar.tintColor = KColorWithHex(Tabbar_select_textColor);
self.tabBar.unselectedItemTintColor = KColorWithHex(Tabbar_normal_textColor);
}
else {
// iOS13 以下
UITabBarItem *item = [UITabBarItem appearance];
[item setTitleTextAttributes:@{ NSForegroundColorAttributeName:KColorWithHex(Tabbar_normal_textColor)} forState:UIControlStateNormal];
[item setTitleTextAttributes:@{ NSForegroundColorAttributeName:KColorWithHex(Tabbar_select_textColor)} forState:UIControlStateSelected];
}
完美解决iOS13及以上版本字体的设置,方式一和方式三的代码都可以写到viewDidLoad方法中,设置一次即可。