更改非活动标签栏图标的颜色

Posted

技术标签:

【中文标题】更改非活动标签栏图标的颜色【英文标题】:Change color of inactive tab-bar icons 【发布时间】:2014-09-16 05:35:58 【问题描述】:

我尝试更改标签栏项目的颜色,因为它在非活动状态下始终为灰色,在活动状态下始终为蓝色。 因此,经过一番搜索后,我尝试将这段代码编写为 Tab bar 的所有 ViewControllers

 self.tabBarItem.selectedImage = [[UIImage imageNamed:@"TabBarItemMenu_tabbed.png"]
                                     imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

    self.tabBarItem.image = [[UIImage imageNamed:@"TabBarItemMenu.png"]
                             imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

但这对我没有帮助,而且我总是得到

【问题讨论】:

请检查这个答案。 ***.com/questions/21596515/… 【参考方案1】:

您还可以这样做:

设置标签栏tintColor属性设置选中图标的颜色

self.tabBar.tintColor = [UIColor redColor];

然后你可以使用文本属性给文本重新着色

for (UITabBarItem *item in self.tabBar.items) 
    NSDictionary *normalState = @UITextAttributeTextColor : [UIColor colorWithWhite:1.000 alpha:1.000],
                              UITextAttributeTextShadowColor: [UIColor clearColor],
                              UITextAttributeTextShadowOffset: [NSValue valueWithUIOffset:UIOffsetMake(0.0, 1.0)];
    [item setTitleTextAttributes:normalState forState:UIControlStateNormal];

    NSDictionary *selectedState = @UITextAttributeTextColor : [UIColor redColor],
                                UITextAttributeTextShadowColor: [UIColor clearColor],
                                UITextAttributeTextShadowOffset: [NSValue valueWithUIOffset:UIOffsetMake(0.0, 1.0)];
    [item setTitleTextAttributes:selectedState forState:UIControlStateHighlighted];

// 编辑

由于 ios7 不推荐使用上层代码,这里更新:

[[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
                                                   [UIColor whiteColor], NSForegroundColorAttributeName,
                                                   nil] forState:UIControlStateNormal];

[[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
                                                   [UIColor redColor], NSForegroundColorAttributeName,
                                                   nil] forState:UIControlStateSelected];

【讨论】:

那么如何改变非活动图像的色调?

以上是关于更改非活动标签栏图标的颜色的主要内容,如果未能解决你的问题,请参考以下文章

更改标签栏中活动整个部分的颜色 - iOS 7

iOS 10,Swift 3 - 更改非活动栏项目图标?

如何快速更改标签栏未选择图标的颜色?

如何禁用标签栏项目以及如何更改禁用项目的颜色和透明度

如何在 Ionic 4 中更改标签栏和标签图标的背景颜色

如何更改标签栏图标的突出显示颜色? (iPhone/iPad)