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;

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


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容