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

Posted

技术标签:

【中文标题】如何更改标签栏中未选中项目的颜色?【英文标题】:How do you change the color of unselected items in a Tab Bar? 【发布时间】:2020-07-04 21:18:26 【问题描述】:

我正在尝试将标签栏中未选中项目图像的颜色从默认的灰色更改为图像的实际颜色(白色),但我的努力没有成功。 Stack Overflow 上有几个与这个问题相关的帖子,但其中很多似乎已经过时了。

Tab Bar with Home and Profile icons

从图片中可以看出,右侧未选中的个人资料图标具有默认的灰色。在做了一些研究之后,我尝试在 App Delegate 文件中运行以下解决方案,将其颜色更改为白色,但遗憾的是这并没有奏效。我是一个新手 Swift 程序员(顺便说一下,这也是我的第一篇文章),所以任何帮助或建议将不胜感激。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool 
    
    let tabBarController = UITabBarController()
    tabBarController.tabBar.unselectedItemTintColor = .white

    return true

【问题讨论】:

【参考方案1】:

将图标图像设为黑色,如果它们是白色的,我不确定它是否会起作用。与实际图像一样,assets 文件夹中的图像本身应该是黑色的,而不是白色的。

如果您从故事板添加标签栏,您可以将这些代码行放在您帖子中显示的 appDelegate 方法中的该方法中

UITabBar.appearance().barTintColor = UIColor.black
UITabBar.appearance().tintColor = UIColor.red
UITabBar.appearance().unselectedItemTintColor = .white

【讨论】:

谢谢,谢恩。不幸的是,这没有奏效。但我开始认为这可能是与模拟器有关的问题。未选中的图标在情节提要上显示为白色,但由于某种原因,它们在模拟器上变为灰色。 对于那些感兴趣的人,之前可能出错的上下文:当我在 Xcode 中输入 'UITabBar.appearance()' 然后开始输入 '.unselectedItemTintColor' Xcode 并没有自动提示这个财产,这让我相信我做错了什么。根据 Apple 的文档,他们似乎弃用了属性“selectedImageTintColor”,然后添加了这个 Xcode 尚未完全注册的新“.unselectedItemTintColor”属性。长话短说,我在 Xcode 行为不端方面遇到了类似的问题,并因此造成了各种混乱。【参考方案2】:

您可以尝试使用 UITabBar.appearence()。 unselectedItemTintColor,更多信息在这里 https://developer.apple.com/documentation/uikit/uitabbar/legacy_customizations

【讨论】:

Xcode 不允许我以这种方式访问​​ unselectedItemTintColor 属性。我能够访问它的唯一方法是初始化 UITabBarController,如我的帖子中所述。而且那个方法没有用。

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

如何创建自定义标签栏...在标签栏中添加自定义图像(无需 xib 更改)

如何更改选中和未选中的标签栏图像颜色

(iOS 9 及以下)如何在用户交互期间指定标签栏项目文本颜色(选中状态和正常状态)

更改标签栏中活动整个部分的颜色 - iOS 7

如何更改ios7中非活动标签栏图标的颜色?

如何在情节提要上更改标签栏背景颜色和标签栏项目颜色