美文网首页iOS点点滴滴OC-开发案例收集iOS 13
iOS 13 TabBar文字选中颜色变为蓝色问题解决

iOS 13 TabBar文字选中颜色变为蓝色问题解决

作者: 觉醒的苍红之刃 | 来源:发表于2019-09-25 14:37 被阅读0次

    问题

    前两天升级了Xcode,昨天用模拟器一看,当跳转了某个控制器隐藏TabBar,再返回TabBar切换控制器的时候选中文字颜色竟然变蓝色了!这……


    正常的选中颜色
    不正常的选中颜色

    折磨

    今天花了一点时间才找到原因。
    找到显示文字的label

     - (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
       UILabel *label = [[viewController.tabBarItem valueForKey:@"_view"] valueForKey:@"_label"];
     }
    

    打断点一看,发现有个属性__textColorFollowsTintColor为true

    label属性

    然后在iOS 12的模拟器一看__textColorFollowsTintColor为false。
    原因应该就在这了,可是用KVC改好像不优雅。

    在iOS7中,UIView新增了一个属性tintColor,被使用在UIView中改变应用程序的外观的。默认tintColor的值为nil,这表示它将会运用父视图层次的颜色来进行着色。如果父视图中没有设置tintColor,那么默认系统就会使用蓝色。

    所以修改父视图tintColor应该能解决问题。


    解决

    //这里的self是UITabBarController,代码根据各自的TabBar定义而定
    self.tabBar.tintColor = selColor;
    

    添加如上代码,一看,解决了。


    相关文章

      网友评论

        本文标题:iOS 13 TabBar文字选中颜色变为蓝色问题解决

        本文链接:https://www.haomeiwen.com/subject/dzoiuctx.html