UITabBar的色调颜色在图片上无效

4

我在Interface Builder中设置了一个UITabBar,只有当我不设置全局应用程序色调时,图像高亮才能正常工作:

tab bar without tint color

当我使用以下代码设置应用程序的全局色调时:

[[UIView appearance] setTintColor:[TAStyleKit tintColor]];

然后所有的选项卡图像都会显示为选中状态。

输入图像描述

只有当我点击选项卡并再次返回时,它们才具有正确的颜色。请注意这里是灰色的“武器”选项卡:

输入图像描述

我错在哪里了?

4个回答

12

编辑:不用管我之前写的内容了,看起来你只需要更改下面的内容...

[[UIView appearance] setTintColor:[TAStyleKit tintColor]];

To...

[[UITabBar appearance] setTintColor:[TAStyleKit tintColor]];

请注意,您试图更改UIView的外观而不是UITabBar的外观。 我在一个项目中运行了这个代码并且奏效。

输入图像描述

输入图像描述

Swift 4.0

UITabBar.appearance().tintColor = UIColor.red 或者 TAStyleKit.tintColor


我每个选项卡只有一张图片,我确实希望对图像应用色调颜色。 - Jan
我删除了我写的所有内容,并编写了一个解决方案,应该可以实现您要寻找的功能。您设置的是UIView的外观,而不是UITabBar。 - timgcarlson
我正在设置 UIView 上的色调,因为我希望所有的 UI 元素都具有这种色调,而不是默认的蓝色。 - Jan
1
我的建议是,虽然不是最方便的方法,但你可以在所有支持UIAppearance的视图上设置全局色调颜色(大多数是UIView子类)。目前还存在一个已知问题,即selectedImageTintColor尚未得到解决,这就是当设置UIView色调颜色时所看到的情况。因此,如果你只有一个选项卡栏、导航栏、分段控件等,那么它只需要在你的代码中添加几行。希望这能帮到你。 - timgcarlson

5

当您无法或不想删除基本的UIView.tintColor代码时,下面可能是更好的方法。只需将标签栏内的UIViews的tintColor设置为默认的灰色。

let view = UIView.appearance()
view.tintColor = UIColor.redColor()

let viewsInTabBar = UIView.appearanceWhenContainedInInstancesOfClasses([UITabBar.self])
viewsInTabBar.tintColor = UIColor(white: 144.0 / 255.0, alpha: 1) // default gray for inactive items

let tabBar = UITabBar.appearance()
tabBar.tintColor = UIColor.redColor() // actual highlight color

很遗憾,苹果不使用其标准灰度值之一...


2

也可以通过Storyboard [XCode 10.1] 直接设置UITabBar的图像色调,方法是设置Image Tint。

enter image description here

0
如果你正在使用SwiftUI,上述的外观技巧将不起作用。请在你的TabView上使用.tint修饰符。
TabView(
  ...
)
.tint(Color.red)

请注意,在旧版SwiftUI中,API为.accentColor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接