主要是因为13.0系统以后采用了新方法,原来的不起作用了,直接上代码:
if (@available(iOS 13.0, *)) {
UITabBarAppearance *tabBarAppearance = [[UITabBarAppearance alloc] init];
NSMutableDictionary<NSAttributedStringKey, id> *selectedAttributes = self.tabBarAppearance.stackedLayoutAppearance.selected.titleTextAttributes.mutableCopy;
selectedAttributes[NSForegroundColorAttributeName] = kBlackColor;
tabBarAppearance.stackedLayoutAppearance.selected.titleTextAttributes = selectedAttributes.copy;
NSMutableDictionary<NSAttributedStringKey, id> *normalAttributes = self.tabBarAppearance.stackedLayoutAppearance.normal.titleTextAttributes.mutableCopy;
normalAttributes[NSForegroundColorAttributeName] = kBlackColor;
tabBarAppearance.stackedLayoutAppearance.normal.titleTextAttributes = normalAttributes.copy;
tabBarAppearance.stackedLayoutAppearance.normal.titleTextAttributes = @{NSForegroundColorAttributeName : kBlackColor};
tabBarAppearance.stackedLayoutAppearance.selected.titleTextAttributes = @{NSForegroundColorAttributeName : kBlackColor};
tabBarAppearance.backgroundImage = [UIImage imageWithColor:kRGB(237, 237, 237)];
tabBarAppearance.shadowColor = kRGB(245, 245, 245);
self.tabBar.standardAppearance = tabBarAppearance;
} else {
NSMutableDictionary *selectedAttributes = [[NSMutableDictionary alloc] initWithDictionary:[[UITabBarItem appearance] titleTextAttributesForState:UIControlStateSelected]];
selectedAttributes[NSForegroundColorAttributeName] = kBlackColor;
[[UITabBarItem appearance] setTitleTextAttributes:selectedAttributes forState:UIControlStateSelected];
[[UITabBarItem appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName: kBlackColor} forState:UIControlStateNormal];
// 2.1 正常状态下的文字
NSMutableDictionary *normalAttr = [NSMutableDictionary dictionary];
normalAttr[NSForegroundColorAttributeName] = [UIColor blackColor];
normalAttr[NSFontAttributeName] = [UIFont systemFontOfSize:10];
// 2.2 选中状态下的文字
NSMutableDictionary *selectedAttr = [NSMutableDictionary dictionary];
selectedAttr[NSForegroundColorAttributeName] = [UIColor blackColor];
selectedAttr[NSFontAttributeName] = [UIFont systemFontOfSize:10];
// 2.3 统一设置UITabBarItem的文字属性
UITabBarItem *item = [UITabBarItem appearance];
// 2.3.1 设置UITabBarItem的正常状态下的文字属性
[item setTitleTextAttributes:normalAttr forState:UIControlStateNormal];
// 2.3.2 设置UITabBarItem的选中状态下的文字属性
[item setTitleTextAttributes:selectedAttr forState:UIControlStateSelected];
self.tabBar.shadowImage = [UIImage imageWithColor:kRGB(237, 237, 237)];
self.tabBar.backgroundImage = [UIImage imageWithColor:kWhiteColor];
}
网友评论