gpt4 book ai didi

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

转载 作者:技术小花猫 更新时间:2023-10-29 10:21:35 25 4
gpt4 key购买 nike

我在谷歌上搜索了很多次,但没有找到直接统一的答案。

我想自定义我的UITabBarController,这样:

  1. UITabBar 本身是全黑的
  2. 项目标题的文字颜色在非高亮状态下为白色
  3. 项目标题的文字颜色在高亮状态下为红色
  4. 在标签栏中使用彩色图标

1。将 UITabBar 变黑

我猜我需要为此使用 UIAppearance API,实际上我可以使用以下方法将 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];

4。多色元素

关于彩色图标,目前的方法是简单地在 Storyboard 中设置图标,如下所示:

enter image description here

但这并不能满足我的要求,它只会在选中该项目时以灰色显示整个图标。选择项目后,图标会完全消失。

这是原始图标:

enter image description here

这是选中项目时的样子:

enter image description here

这里是选中状态,如前所述,图标完全消失了:

enter image description here

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

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

最佳答案

我遇到了和你一样的问题。据我所知,不同的 iOS 版本没有区别。
我像这样以编程方式解决了它:

  1. 将条形颜色变为黑色如下(您已经说过)(在 AppDelegate 中):

    UITabBar.appearance().barTintColor = UIColor.blackColor()

  2. 为了设置不同状态的标题颜色,我使用了这段代码(在 AppDelegate 中):

    UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName!: UIColor.redColor()], forState:.Selected)
    UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName!: UIColor.whiteColor()], forState:.Normal)
  3. (和 4.)您可以通过以编程方式设置图像并更改渲染模式 (imageWithRenderingMode: ) 到 UIImageRenderingMode.AlwaysOriginal,这看起来如下(在所有 View Controller 的第一个 View Controller 类中执行此操作):

    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

希望对您有所帮助,如果您有以下任何问题,请随时问我。

关于ios - 如何在 iOS 7 和 iOS 8 上正确自定义 UITabBar 和 UITabBarItem?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27144220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com