如何更改iOS7中未选择的tabbaritem颜色?

在iOS 7之前我使用过

[[UITabBar appearance] setTintColor:[UIColor redColor]]; 

但是现在它只绘制了所选的项目,我已经阅读了一些建议,但我无法完成如何操作,我也使用了它:

 [self.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"openbookwp4.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"openbookwp4.png"]]; 

这把我想要的图标和我想要的颜色放在一起,但只有在我选择该标签后,例如,当我打开应用程序时,标签看起来正常,但是在我按下第二个标签并返回第一个标签后,第二个标签现在有我想要的颜色。 没有图像很难解释,但我无法发布图像……

此代码适用于iOS 7。

 [[UITabBarItem appearance] setTitleTextAttributes:@{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Bold" size:10.0f], NSForegroundColorAttributeName : [UIColor colorWithRed:.5 green:.5 blue:.5 alpha:1] } forState:UIControlStateNormal]; 

根据需要设置前景色。

还要影响未选中的标签栏图标:

 [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor greenColor], UITextAttributeTextColor, nil] forState:UIControlStateNormal]; 

如果它不起作用,唯一的方法是选择和未选择状态的图像:

 // set selected and unselected icons UITabBarItem *item = [self.tabBar.items objectAtIndex:0]; // this way, the icon gets rendered as it is (thus, it needs to be green in this example) item.image = [[UIImage imageNamed:@"unselected-icon.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; // this icon is used for selected tab and it will get tinted as defined in self.tabBar.tintColor item.selectedImage = [UIImage imageNamed:@"selected-icon.png"]; 

在我的情况下,问题是我只在viewDidLoad中定义了标签栏项。 如果这样做,很明显只有在加载相应选项卡的视图后才会设置图像,但最初不会设置图像(仅选择第一个选项卡时)。

我的解决方案是在视图控制器的init方法中定义自定义选项卡项,然后即使尚未加载控制器视图,也可以看到未选择的图像。

接下来来自Nikos Answer

对于swift 2. *它看起来像这样

  UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.whiteColor()], forState:.Normal) UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.whiteColor()], forState:.Selected) let Item1 = self.items![0] Item.image = UIImage(named: "Icon1")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal) let Item2 = self.items![1] Item2.image = UIImage(named: "Icon2")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal) let Item3 = self.items![2] Item3.image = UIImage(named: "Icon3")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)