UITabBar 不改变色调 Xcode 9.3

UITabBar not changing tint color Xcode 9.3

这很奇怪。我的全局色调已设置,我的图标颜色已设置为我拥有的默认紫色。然而在 运行 时间它是蓝色的。有小费吗?我四处查看,没有看到其他人有这个问题。

故事板:

运行时间:

基本上,当您想以编程方式更改 UITabBar 的色调时,UITabBar class 会为您提供几个色调颜色属性:

  • tintColor: TabBarItem的颜色。
  • barTintColor : TabBar 的背景栏颜色。
  • unselectedItemTintColor : 未选中项目的颜色。

因此,如果您更改 tintColor,barItems 的颜色将会更改。


...但是,为什么它在 IB 上不起作用?

当您在 IB 中为 UITabBar 的项目设置特定颜色时,有一个名为 Image Tint 的选项。

更改“视图”部分的 Tint 选项不会对 TabBar 的项目产生任何影响,但只有 Image Tint 选项可以更改 tabBar 的项目颜色。

storyboard 的全局色调颜色选项更改了“查看”部分的 Tint 选项,但不影响 Image Tint 选项的默认值,因此它不会影响标签栏的色调颜色。


所以.. 为什么 Image Tint 选项不受影响?

我无法解释为什么它不受影响。也许 Apple 对此有疑问,或者是某种错误。


设置图像颜色有一些解决方法:

  • 为 UITabBarController 的 TabBar 对象显式设置 Image Tint 选项。

您可能应该设置每个 TabBarControllerImage Tint 选项,因为它不会影响全局设置。

  • 以编程方式更改全局 UITabBar 的 tintColor。

AppDelegate.swiftdidFinishLaunchingWithOptions,粘贴以下代码

UITabBar.appearance().tintColor = <#Color what you want#>

我遇到了类似的问题,通过将 "Render As" 属性 改为 "Default" 而不是 "Original" 解决了这个问题。在属性检查器 "Render As" 下的右侧选择图像时,您可以在资产库中找到它。