3

在 iOS 7 之前,我使用

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

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

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

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

4

3 回答 3

20

此代码适用于 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"];
于 2013-10-29T15:15:39.600 回答
0

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

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

于 2013-11-28T10:24:03.577 回答
0

继 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)
于 2016-05-17T11:27:52.257 回答