如何更改选中和未选中的标签栏图像颜色

Posted

技术标签:

【中文标题】如何更改选中和未选中的标签栏图像颜色【英文标题】:How to change the tab bar image color for selected and unselected 【发布时间】:2015-10-27 11:11:09 【问题描述】:

我正在尝试更改 ios 应用程序中标签栏项目的颜色。

子视图控制器嵌入在导航控制器中。

我在 AppDelegate 中添加了这段代码,它只是改变了文本的颜色。

 [UITabBarItem.appearance setTitleTextAttributes:
 @NSForegroundColorAttributeName : [UIColor colorWithRed:38/255.0 green:54/255.0 blue:73/255.0 alpha:1.0]
                                       forState:UIControlStateNormal];

 [UITabBarItem.appearance setTitleTextAttributes:@NSForegroundColorAttributeName : kColorTabbarNavigationBarTint
                                       forState:UIControlStateSelected];

在图像资源中,如果我将特定图像渲染为原始图像,它可以工作,但选择颜色不适用于图像。

请告诉我可以做什么。

提前谢谢...

【问题讨论】:

您必须为特定标签项设置选定图像和未选定图像 是的,我尝试在每个视图控制器类中设置它,但没有用。我们不应该在故事板中为标签栏项目设置图像吗? 是的,您可以从情节提要中设置它。 【参考方案1】:

试试下面的代码:当你想以编程方式设置时。

// get your TabBarController
//UITabBarController *tabBarController = self.tabBarController
UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController; 
UITabBar *tabBar = tabBarController.tabBar;

UITabBarItem *tabItem1 = [tabBar.items objectAtIndex:0];
[tabItem1 setSelectedImage:[UIImage imageNamed:@"selectimg"]];
tabItem1.selectedImage = [[UIImage imageNamed:@"selectimg"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ];
tabItem1.image = [[UIImage imageNamed:@"deselectimg"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ];
tabItem1.title = @"xxxx";

UITabBarItem *tabItem2 = [tabBar.items objectAtIndex:1];
tabItem2.selectedImage = [[UIImage imageNamed:@"selectimg"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ];
tabItem2.image = [[UIImage imageNamed:@"deselectimg"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ];
tabItem2.title = @"xxxx";

UITabBarItem *tabItem3 = [tabBar.items objectAtIndex:2];
tabItem3.selectedImage = [[UIImage imageNamed:@"selectimg"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ];
tabItem3.image = [[UIImage imageNamed:@"deselectimg"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ];
tabItem3.title = @"xxxx";

UITabBarItem *tabItem4 = [tabBar.items objectAtIndex:3];
tabItem4.selectedImage = [[UIImage imageNamed:@"selectimg"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ];
tabItem4.image = [[UIImage imageNamed:@"deselectimg"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ];
tabItem4.title = @"xxxx";

或者您可以在情节提要中设置它,选择特定的选项卡项目并见下文

【讨论】:

为此我是否必须在情节提要的标签栏视图控制器中设置图像?还是我应该把这个留空?

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

如何更改 iOS 7 中未选择的标签栏项目的颜色?

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

如何在更多视图控制器的导航栏中设置图像并将更多标签的颜色从白色更改为绿色..?

(iOS 9 及以下)如何在用户交互期间指定标签栏项目文本颜色(选中状态和正常状态)

更改未选择的标签栏项目图像的颜色而不使其成为原始图像

标签栏控制器中标签栏项目的不同颜色