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

问题

前两天升级了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文字选中颜色变为蓝色问题解决)