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

Posted

技术标签:

【中文标题】如何更改 iOS7 中未选中的 tabbaritem 颜色?【英文标题】:How to change the unselected tabbaritem color in iOS7? 【发布时间】:2013-10-29 15:09:24 【问题描述】:

ios 7 之前我用过

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

但是现在它只绘制选定的项目,我已经阅读了一些建议,但我不知道该怎么做,我也用这个:

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

这把我想要的图标,我想要的颜色,但只有在我选择了那个选项卡之后,例如,当我打开应用程序时,选项卡看起来很正常,但是在我按下第二个选项卡并返回到第一个选项卡后,第二个标签现在有我想要的颜色。没有图片很难解释,但我不能发布图片......

【问题讨论】:

看看你的问题是不是和我的问题***.com/questions/18688189/…类似 【参考方案1】:

此代码适用于 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"];

【讨论】:

你好,这只是改变文字颜色,如何改变图标颜色?谢谢 编辑了我的答案。希望对您有所帮助。 第二个 sn-p 在 iOS7 (UITextAttributeTextColor) 上已弃用,您可以改用 [[UITabBarItem appearance] setTitleTextAttributes:@NSForegroundColorAttributeName : [UIColor greenColor] forState:UIControlStateNormal]; 谢谢! UIImageRenderingMode.AlwaysOriginal 也适用于 iOS 9。我用 UIAppearance 尝试了许多其他的东西,但除了第一次绘制之外没有任何东西持续存在。这个可以。 为了我的使用,我还必须将渲染模式添加到所选图像。【参考方案2】:

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

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

【讨论】:

【参考方案3】:

从 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)

【讨论】:

以上是关于如何更改 iOS7 中未选中的 tabbaritem 颜色?的主要内容,如果未能解决你的问题,请参考以下文章

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

更改 TabView (SwiftUI) 中未选中图标的颜色

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

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

导航栏项目中未显示标题和后退按钮(iOS 7)

iOS7 上的 UIActivityViewController 中未显示 Facebook、Twitter 图标