在Xcode 11(测试版2)的Interface Builder中指定了条调颜色时,UITabBarItem图标未针对iOS 13正确着色

时间:2019-07-01 16:44:27

标签: ios uitabbarcontroller interface-builder uitabbaritem xcode11

当我使用Xcode 11,beta 2在iOS 13模拟器上运行时,我的UITabBarItems的颜色有问题。我已经从头开始制作了一个示例项目,并且当我未指定色条颜色时一切都可以正常工作。但是,当我通过Interface Builder指定自定义的条形颜色时,会得到以下提示:

Both selected an unselected item icons have highlight color

如果我将Interface Builder中的“ Bar Tint”属性设置为除clear以外的任何选项,则选项卡栏中的所有项目图标均具有选定的颜色。设置为清除时,图标将正确着色。如果我在iOS 12模拟器中编译并运行,图标的颜色也会正确显示。

这似乎是Xcode 11中的错误,但也许我遗漏了一些东西?

8 个答案:

答案 0 :(得分:16)

iOS 13中有一个新的外观API。要使用Xcode 11.0为标签栏项目的图标和文本正确着色,您可以像这样使用它:

    if #available(iOS 13, *) {
        let appearance = UITabBarAppearance()

        appearance.backgroundColor = .white
        appearance.shadowImage = UIImage()
        appearance.shadowColor = .white

        appearance.stackedLayoutAppearance.normal.iconColor = .black
        appearance.stackedLayoutAppearance.normal.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.black]

        appearance.stackedLayoutAppearance.selected.iconColor = .red
        appearance.stackedLayoutAppearance.selected.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.red]

        self.tabBar.standardAppearance = appearance

    } 

答案 1 :(得分:3)

使用IB中的属性字段“图像色调”。

Use the attribute field "Image Tint" in IB

答案 2 :(得分:1)

苹果自己的Podcasts应用程序也有同样的问题。当前是一个错误。

答案 3 :(得分:1)

从表面上看,这似乎是一个错误,但是您可以通过在UITabBar实例上定义.unselectedItemTintColor来缓解它。

self.tabBar.unselectedItemTintColor = [UIColor lightGrayColor];

答案 4 :(得分:1)

对于Objective C,您可以在AppDelegate中使用

[[UITabBar appearance] setTintColor:[UIColor whiteColor]];
[[UITabBar appearance] setUnselectedItemTintColor:[UIColor colorWithRed:255.0f/255.0f green:255.0f/255.0f blue:255.0f/255.0f alpha:0.65f]];

答案 5 :(得分:1)

string[] result = {
    "a,b",
    "e,t",
    "z,c"
};

答案 6 :(得分:0)

self.tabBarController?.tabBar.unselectedItemTintColor = UIColor.lightGray

这对我迅速起作用。只需将其放在override func viewWillDisappear(_ animated: Bool)方法中,它将随着视图的更改而更新。

所以看起来像这样

override func viewWillDisappear(_ animated: Bool) {
    self.tabBarController?.tabBar.unselectedItemTintColor = UIColor.lightGray
}

即使这是一个错误(我不确定),您也可以使用此颜色通过使用您选择的任何颜色来更改选项卡栏项的颜色

答案 7 :(得分:0)

感谢 Samuël 的回答。这是我应用中的 UITabBar 设置,已经是 2021 年了,但互联网上关于如何为 iOS 13 及更高版本设置 DataFrame 的有用信息仍然很少见。

UITabBar