当前位置: 首页 > 知识库问答 >
问题:

iOS Swift TabBar状态栏文本颜色故障半白半黑

阴鸿才
2023-03-14

我正在尝试将某些视图控制器上的状态栏文本更改为白色,但在其他一些视图控制器上,它仍然需要为黑色。(因此无法对整个应用程序进行全局更改)。

一切正常,除了前几秒钟,当点击不同的标签栏时,当出现故障时,状态栏的一半文本变成黑色,而不是白色。然后一切都完美更新。

结构是这样的:一个带有几个选项卡的选项卡栏控制器,每个选项卡包含一个导航控制器,包含一个视图控制器。

有了导航控制器,就有必要更改navigationController?。导航栏。barStyle=。黑色使其工作。

在标签上按几次后,它工作正常。

当然,我做的第一件事是从中设置查看基于控制器的状态栏外观。plist

我还覆盖了首选的StatusBarStyle,使用布尔值来设置哪个视图控制器应该有白色或黑色状态栏文本:

override var preferredStatusBarStyle: UIStatusBarStyle {
    return coloredNavigationBar ? .lightContent : .default
}

var coloredNavigationBar: Bool = true

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    if coloredNavigationBar {
        navigationController?.navigationBar.barStyle = .black
    } else {
        navigationController?.navigationBar.barStyle = .default
    }
    setNeedsStatusBarAppearanceUpdate()
}

粘贴的代码来自到处使用的基本视图控制器。

共有1个答案

微生毅
2023-03-14

是的@马特说得对,谢谢。的确,iOS在使用tabbar时会感到困惑。

解决方案是将其添加到TabBarController中:

override public var childForStatusBarStyle: UIViewController? {
    if let controller  = selectedViewController as? UINavigationController {
        return controller.visibleViewController
    }
    return selectedViewController
}
 类似资料:
  • 当我设定时 状态栏变成黑色半透明,但我需要白色 样品

  • 但是我没有找到更改状态文本颜色的方法。如果我将颜色Primary深色设置为白色,我看不到状态栏文本的图标,因为它们的颜色也是白色的。 有什么办法可以更改状态栏文字颜色吗?

  • 我正在尝试将状态栏的颜色改为半透明的黑色(Android7.0),但我得到的只是一个灰色状态栏。每当我尝试将状态栏设置为透明或半透明时,我就会得到这种灰色。但纯色很好用。我使用的是折叠式工具栏布局,我知道我可以使用statusBarScrim,但这个功能也不起作用,我不知道为什么。 XML: 样式: 我也试过使用这些:

  • 如附图所示,状态栏文本为黑色。有没有办法换另一种颜色,比如白色?

  • 状态栏文字颜色 sdk状态栏文字的颜色可以设置为白色或者黑色 , 设置方法如下: /** @param isDark true为黑字模式, false为白色模式 */ Ntalker.getInstance().statusBarDarkMode(boolean isDark);

  • 因此,我在这里读了几篇关于更改状态栏文本颜色的帖子,但都没用。所以我最初的问题是,状态栏现在在iOS7中是透明的,我希望它是带黑色文本的白色。所以我把它添加到我的viewcontroller中。 好的,现在状态是黑对黑,不能阅读文本,但至少它不是透明的。所以现在我做了下面的事情。 进入plist并添加了这个 然后我将此添加到我的应用程序委托 现在我有一个状态栏是白色的,但是文本是白色的,所以你看不