iOS 13中的UITabBar透明标签错误

时间:2019-10-09 07:29:10

标签: ios swift ios13 xcode11

iOS:13.1.2 Xcode:11.1(11A1027)

在选项卡栏中,我们选择对选项卡项目使用透明文本,因此在iPhone中,我们仅显示选项卡项目图像,而文本是不可见的(并且应该仅在iPad上可见),我们通过调用:

extension UITabBarItem {
    func updateTitleVisibility(for traitCollection: UITraitCollection) {
        switch traitCollection.horizontalSizeClass {
        case .compact:
            hideTabBarTitle()
        default:
            showTabBarTitle()
        }
    }

    func hideTabBarTitle() {
        imageInsets = UIEdgeInsets(top: 6, left: 0, bottom: -6, right: 0)
        setTitleTextAttributes([NSAttributedString.Key.foregroundColor: UIColor.clear], for: .normal)
        setTitleTextAttributes([NSAttributedString.Key.foregroundColor: UIColor.clear], for: .selected)
    }

    func showTabBarTitle() {
        imageInsets = .zero
        setTitleTextAttributes([NSAttributedString.Key.foregroundColor: UIColor.licorice], for: .normal)
        setTitleTextAttributes([NSAttributedString.Key.foregroundColor: UIColor.secondaryBlue], for: .selected)
    }
}

在为iOS 13编译我们的应用程序(iOS 12上没有发生)时,发生了奇怪的行为(请注意选项卡栏):

Video of the bug @ Imgur

(^我没有设法将其嵌入帖子中)

Imgur

因此,呈现全屏视图控制器后,非活动选项卡的选项卡文本突然显示,但是当检查视图调试器时足够令人难以置信应该透明的标签是确实透明的

view debugger

有人看到过这样的行为吗?我该如何解决

1 个答案:

答案 0 :(得分:1)

好吧,这是由于iOS 13在默认暗模式下的行为所致。

要实现标签所需的功能,如iOS 13以下的版本

只需将其添加到您的Info.plist中:

<key>UIUserInterfaceStyle</key>
<string>Light</string>

这实际上是将全局用户界面样式更改为light样式,这是iOS 13以下版本的默认样式。

如果您不想更改用户界面样式,还可以在选项卡栏上更改未选中项目的色调颜色:

tabBar.unselectedItemTintColor = .darkGray

或您选择的其他任何色调。