相关疑难解决方法(0)

如何在iOS 7和iOS 8上正确自定义UITabBar和UITabBarItem?

我在谷歌搜索这么多,但我找不到一个直接和巩固的答案.

我想自定义我的UITabBarController:

  1. 它UITabBar本身就是黑色的
  2. 项目标题的文本颜色在非突出显示状态下为白色
  3. 项目标题的文本颜色在突出显示状态下为红色
  4. 在选项卡栏中使用多色图标

1. UITabBar变黑

我猜我需要使用UIAppearanceAPI,实际上我可以UITbarBar使用以下方式将黑色变为:[[UITabBar appearance] setBarTintColor:[UIColor blackColor]];.

2.和3.修改项目标题的颜色

然而,文字项目的颜色似乎没有做我想要的,在谷歌搜索后,以下解决方案对我有意义,但它只将非突出显示状态更改为白色,突出显示保持白色...

NSDictionary *titleAttributes = @{NSForegroundColorAttributeName : [UIColor whiteColor]};
[[UITabBarItem appearance] setTitleTextAttributes:titleAttributes forState:UIControlStateNormal];

UIColor *titleHighlightedColor = [UIColor redColor]; 
NSDictionary *highlightedTitleAttributes = @{NSForegroundColorAttributeName : titleHighlightedColor};
[[UITabBarItem appearance] setTitleTextAttributes:highlightedTitleAttributes forState:UIControlStateHighlighted];
Run Code Online (Sandbox Code Playgroud)

4.多彩多姿的物品

关于五彩图标,到目前为止的方法是简单地设置故事板中的图标,如下所示:

在此输入图像描述

但这并不是我想要的,它只在未选择项目时以灰色显示整个图标.选择项目后,图标将完全消失.

这是原始图标:

在此输入图像描述

这是未选择项目时的外观:

在此输入图像描述

在这里,它是在选定的陈述,如上所述,图标完全消失:

在此输入图像描述

所以,我的问题是我能够达到上述要求的准确程度.我目前缺少什么?我在代码中做的所有事情都比在Storyboard中做得更好吗?

注意:我的目标是iOS版本大于7.0,因此如果iOS 7和iOS 8之间的行为不同,请包含任何特定于版本的信息.

objective-c uitabbarcontroller uitabbaritem uitabbar ios

13
推荐指数
2
解决办法
1万
查看次数