【问题标题】:Set Status Bar Tint Colour设置状态栏色调颜色
【发布时间】:2025-12-12 19:05:02
【问题描述】:

我有一个选项卡式栏应用程序,状态栏色调设置为默认颜色 - 所以它始终是我在整个应用程序中选择的蓝色。

但是,在一个视图中,我隐藏了导航栏,如下所示:

[self.navigationController setNavigationBarHidden:YES];

这是在 viewWillAppear 方法中,并且该视图是可访问的,因为它是我的应用程序的选项卡之一。

我之所以隐藏它,是因为我想在它的位置放置一个工具栏(大约有 6 个按钮)。

我已经设置了我的工具栏的色调,但是,这个视图上的状态栏总是黑色的。有没有办法为这个视图重新设置状态栏,或者有没有更好的方法来隐藏导航栏以保留状态栏的色调。

更新我在某处读到,当着色设置为默认值时,状态栏的颜色将是标题中最低像素的颜色。

我尝试在故事板中隐藏导航栏,也尝试将色调颜色更改为“自定义”,但这也没有效果。

这两个屏幕截图可能说明了我的问题。切换导航栏会更改状态栏颜色。这是嵌入了相关视图的导航控制器。

【问题讨论】:

  • ...所以您的意思是隐藏导航栏会将状态栏颜色更改为黑色?

标签: ios ios6 uinavigationbar uitoolbar uistatusbar


【解决方案1】:

啊!!!我有一个可行的解决方案......虽然是一个非常肮脏和临时的解决方案。

  1. 只需隐藏故事板中的导航栏(如相关图片所示 - 取消选中 Shows Navigation Bar)。
  2. 将导航栏拖到视图中。
  3. Alpha 设置为 0 并取消选中 User Interaction Enabled - 请勿隐藏
  4. 确保导航栏位于顶部 - 如下图所示。

这样您的状态栏将选择正确的颜色而不显示导航栏。

希望在最近的 Xcode 更新中提供一种更有弹性/更好的方法。

重要提示:要使工具栏看起来像导航栏:

  1. 将工具栏 -1 放在 Y 轴上
  2. 创建一个高度为 44 像素、宽度为 320 像素、位置为 0,0 的标签(无文本)。这将是标签栏的底部边框。为获得最佳效果,请截取应用页面的屏幕截图并使用软件获取边框颜色 - 这是阴影开始之前选项卡中最暗的部分(使用此颜色作为标签的背景)。李>

【讨论】:

  • 我如何多次给你点赞? :) 我打算在您的工具栏前面建议一个 1 像素高的导航栏;确实有效(*.com/a/14613259/341994)。但是你的解决方案,一个 alpha 为 0 的导航,是我永远不会想到的。
【解决方案2】:

如果您使用的是 iOS 6.0,您可以通过 plist 文件设置状态栏颜色。见-How to set status bar tint color on iOS 6?

From iOS 6 release notes;

状态栏

现在可以在应用程序中设置状态栏色调参数 Info.plist 文件。您可以这样做以确保状态栏颜色 在启动期间匹配您应用的导航栏颜色。设置 状态栏色调,将 UIStatusBarTintParameters 键添加到您的 Info.plist 文件。这个键的值是一个字典 描述您的应用所在的导航栏的适当值 启动。字典里面应该是 UINavigationBar 键, 它的值也是字典。该词典包含 初始导航栏的样式(使用 Style 键)并指示 是否是半透明的(使用 Translucent 键)。你也可以 指定导航栏的色调颜色(使用 TintColor 键)或 其自定义背景图像的名称(带有 BackgroundImage 键)。

[编辑]

似乎在 iOS 6 中状态栏颜色是由导航栏颜色自动确定的。在隐藏导航栏之前,您可以将导航栏的颜色设置为默认值,看看是否有什么不同。

【讨论】:

  • 我试过这个,但没有用:[self.navigationController.navigationBar setTintColor:[UIColor redColor]]; [self.navigationController setNavigationBarHidden:YES];
【解决方案3】:
Change statusBarStyle of application-
[[UIApplication sharedApplication] 
      setStatusBarStyle:UIStatusBarStyleDefault animated:NO];

【讨论】:

  • 我想过这个,可惜没有效果。