设置系统tabbar字体颜色

方式一:

// 设置item的选中状态的颜色,但是默认的颜色未设置,不符合要求

[[UITabBar appearance] setTintColor:[UIColor colorWithHexString:Tabbar_select_textColor]];

设置系统tabbar字体颜色_第1张图片
只修改了选中状态下字体,默认字体未能修改.png

方式二:

// 别人推荐的方式:在添加controller的时候设置默认和选中的字体,其实在viewDidLoad中设置一次tabbar即可

  [controller.tabBarItem setTitleTextAttributes:@{NSForegroundColorAttributeName:KColorWithHex(PrimaryBgColor)} forState:UIControlStateSelected];
  [controller.tabBarItem setTitleTextAttributes:@{NSForegroundColorAttributeName:KColorWithHex(KColor_TextFirst)} forState:UIControlStateNormal];

这种方式在iOS13以下版本还是可以的,但是iOS13的效果如下,偶尔会出现字体变成系统蓝色的bug:


设置系统tabbar字体颜色_第2张图片
偶尔出现蓝色字体.png
设置系统tabbar字体颜色_第3张图片
iOS13下默认字体仍未修改.png

方式三:

// 方式三:适配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方法中,设置一次即可。

参考:
https://www.jianshu.com/p/2b55512c9a1f

你可能感兴趣的:(设置系统tabbar字体颜色)