如果在iOS13中使用以下代码设置Tabbar文字渲染在点击其他item切换或则push返回的时候是会失效的,字体颜色是会返回系统默认的蓝色
UITabBarItem *item = [UITabBarItem appearance];
[item setTitleTextAttributes:normalAttrs forState:UIControlStateNormal];
[item setTitleTextAttributes:selectedAttrs forState:UIControlStateSelected];
iOS13后文档中对#UIBbarAppearance#对象有说明,在设置的对象属性时需要初始化并设置一个UIBarAppearance或则子类来设置其对象属性
正确设置方式:
if (@available(iOS 13.0, *)) {
// titColor就是选中的颜色
self.tabBar.tintColor = [UIColor redColor];
//如果需要设置默认颜色可以使用setUnselectedItemTintColor来设置未选中颜色
[self.tabBar setUnselectedItemTintColor:UIColor redColor];
} else {
// 统一给所有的UITabBarItem设置文字属性
UITabBarItem *item = [UITabBarItem appearance];
[item setTitleTextAttributes:normalAttrs forState:UIControlStateNormal];
[item setTitleTextAttributes:selectedAttrs forState:UIControlStateSelected];
}
二、去除上面的线
if (@available(iOS 13.0,*)) {
UITabBarAppearance * appeearance = self.standardAppearance;
appeearance.backgroundImage = [UIImage imageWithColor:[UIColor clearColor]];;
appeearance.shadowImage = [UIImage imageWithColor:[UIColor clearColor]];;
self.standardAppearance = appeearance;
}
else{
self.backgroundImage = [UIImage new];
self.shadowImage = [UIImage new];
}
//imageWithColor是为UIImage写的一个分类方法:根据颜色生成一张图片,其中 [UIImage new] 方法已不在适用。