我想自定义myUITabBarController,使得:
> UITabBar本身是完全黑色的
>项目标题的文本颜色为非突出显示状态的白色
>项目标题的文本颜色在突出显示状态为红色
>在标签栏中使用多彩图标
将UITabBar转黑
我猜想我需要使用UIAppearance API,实际上我可以使用以下方式转换UITbarBar黑色:[[UITabBar外观] setBarTintColor:[UIColor blackColor]] ;.
然而,文本项目的颜色似乎没有做我想要的,在谷歌搜索之后,以下解决方案对我有意义,但它只将非突出显示的状态更改为白色,突出显示保持白色以及…
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];
多彩多姿的物品
关于多彩多姿的图标,到目前为止的方法是简单地在Storyboards中设置图标,如下所示:
但是这并不是我想做的,只有在没有选择该项目的时候,它才会显示灰色的整个图标.当选择项目时,图标将完全消失.
这是原始图标:
这是当未选择项目时的外观:
而在这里它是被选定的,如所提到的图标完全消失:
所以我的问题是我能如何达到上述要求.我目前缺少什么?我最好在代码中做所有的事情,而不是在故事板中吗?
注意:我的目标是iOS版本大于7.0,因此如果iOS 7和iOS 8之间的行为有所不同,请包含任何特定于版本的信息.
解决方法
我以编程方式解决了这个问题:
>转动条黑色作品如下(您已经说过)(在AppDelegate中):
UITabBar.appearance().barTintColor = UIColor.blackColor()
>要设置不同状态的标题的颜色,我使用这个代码(在AppDelegate中):
UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName!: UIColor.redColor()],forState:.Selected) UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName!: UIColor.whiteColor()],forState:.Normal)
(和4.)通过以编程方式设置图像并将渲染模式(imageWithRenderingMode :)更改为UIImageRenderingMode.AlwaysOriginal,可以实现不同状态的不同项目颜色,多色图标和不同项目颜色,这看起来如下这在所有视图控制器的第一个视图控制器类中):
var recentsItem = self.tabBarController!.tabBar.items![0] as UITabBarItem var recentsItemImage = UIImage(named:"recents.png")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal) var recentsItemImageSelected = UIImage(named: "recentsSelected.png")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal) recentsItem.image = recentsItemImage recentsItem.selectedImage = recentsItemImageSelected
我希望这有助于,如果您有以下任何问题,请随时问我.