問(wèn)題
前兩天升級(jí)了Xcode,昨天用模擬器一看,當(dāng)跳轉(zhuǎn)了某個(gè)控制器隱藏TabBar,再返回TabBar切換控制器的時(shí)候選中文字顏色竟然變藍(lán)色了!這……

正常的選中顏色

不正常的選中顏色
折磨
今天花了一點(diǎn)時(shí)間才找到原因。
找到顯示文字的label
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController { UILabel *label = [[viewController.tabBarItem valueForKey:@"_view"] valueForKey:@"_label"]; }
打斷點(diǎn)一看,發(fā)現(xiàn)有個(gè)屬性__textColorFollowsTintColor為true

label屬性
然后在iOS 12的模擬器一看__textColorFollowsTintColor為false。
原因應(yīng)該就在這了,可是用KVC改好像不優(yōu)雅。
在iOS7中,UIView新增了一個(gè)屬性tintColor,被使用在UIView中改變應(yīng)用程序的外觀的。默認(rèn)tintColor的值為nil,這表示它將會(huì)運(yùn)用父視圖層次的顏色來(lái)進(jìn)行著色。如果父視圖中沒(méi)有設(shè)置tintColor,那么默認(rèn)系統(tǒng)就會(huì)使用藍(lán)色。
所以修改父視圖tintColor應(yīng)該能解決問(wèn)題。
解決
//這里的self是UITabBarController,代碼根據(jù)各自的TabBar定義而定 self.tabBar.tintColor = selColor;
添加如上代碼,一看,解決了。