iOS 13 TabBar文字选中颜色变为蓝色问题解决
2019-09-25 本文已影响0人
觉醒的苍红之刃
问题
前两天升级了Xcode,昨天用模拟器一看,当跳转了某个控制器隐藏TabBar,再返回TabBar切换控制器的时候选中文字颜色竟然变蓝色了!这……
正常的选中颜色
不正常的选中颜色
折磨
今天花了一点时间才找到原因。
找到显示文字的label
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController { UILabel *label = [[viewController.tabBarItem valueForKey:@"_view"] valueForKey:@"_label"]; }
打断点一看,发现有个属性__textColorFollowsTintColor
为true
然后在iOS 12的模拟器一看__textColorFollowsTintColor
为false。
原因应该就在这了,可是用KVC改好像不优雅。
在iOS7中,UIView新增了一个属性tintColor,被使用在UIView中改变应用程序的外观的。默认tintColor的值为nil,这表示它将会运用父视图层次的颜色来进行着色。如果父视图中没有设置tintColor,那么默认系统就会使用蓝色。
所以修改父视图tintColor应该能解决问题。
解决
//这里的self是UITabBarController,代码根据各自的TabBar定义而定 self.tabBar.tintColor = selColor;
添加如上代码,一看,解决了。