2

我已经尝试了几乎最大的解决方案,但它没有帮助,选择的状态颜色正在应用,但对于正常状态,它没有应用。我只在 iOS13.2 中专门面临这个问题。

        tabBarItem.setTitleTextAttributes([NSAttributedString.Key.font: tabFont,
                                       NSAttributedString.Key.foregroundColor: UIColor.yellow],
                                      for: .selected)
    tabBarItem.setTitleTextAttributes([NSAttributedString.Key.font: tabFont,
                                       NSAttributedString.Key.foregroundColor: UIColor.white],
                                      for: UIControl.State.normal)

我在 plist 中禁用了暗模式。它始终显示为灰色。

在此处输入图像描述

4

1 回答 1

0

有点不清楚问题是什么。这是 iOS 13 中的一个错误,或者至少是一个严重的行为改变。

要看到这一点,只需从 Tabbed App 模板创建新项目,然后在第一个视图控制器的初始化程序中应用您的代码:

class FirstViewController: UIViewController {
    required init?(coder: NSCoder) {
        super.init(coder:coder)
        let tabFont = UIFont(name: "Georgia", size: 14)!
        tabBarItem.setTitleTextAttributes([.font: tabFont,
                                           .foregroundColor: UIColor.yellow],
                                          for: .selected)
        tabBarItem.setTitleTextAttributes([.font: tabFont,
                                           .foregroundColor: UIColor.white],
                                          for: UIControl.State.normal)
    }
}

在 iOS 12 上,标签栏项目文本在选中时为黄色,未选中时为白色。但是在 iOS 13 中,bar item 文本在未选中时是灰色的。

我还没有找到令人满意的方法来解决这个问题。正如评论中所建议的,您可以这样说:

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
    self.tabBarController?.tabBar.unselectedItemTintColor = .white
}

但这是一个太宽泛的画笔,因为它会为所有标签栏项目着色,并且也会为图像着色。

您可以尝试使用新的 UITabBarItemAppearance 类,但这有其他不良副作用。

因此,除了提交错误报告之外,您无能为力。

于 2019-11-20T00:44:16.920 回答