【问题标题】:Need to either set status bar to solid color, or add subview to status bar需要将状态栏设置为纯色,或将子视图添加到状态栏
【发布时间】:2015-02-06 07:49:40
【问题描述】:

我正在使用UINavigationController 并在整个应用程序中显示导航栏,但我不想向用户显示状态栏。我的问题是如果我隐藏了状态栏,那么导航栏的大小就不够大,无法呈现完整的导航栏。

我想做以下其中一项:

  1. 将状态栏设为纯色。这不会显示任何状态栏内容,它实际上只是颜色。

  2. 向状态栏添加一个子视图,这样我就可以覆盖它的所有“状态”内容。这个子视图只是一个纯色的 UIView。

这将允许我在顶部拥有完整大小的“导航栏”,而不必实际显示状态栏内容。

编辑:

我一直在尝试以下UIWindow 解决方法,但没有成功。在我的视图控制器的 viewWillAppear: 方法之一中调用了以下代码:

UIWindow *statusWindow = [[UIWindow alloc] initWithFrame:CGRectMake(0, 0, 320, 20)];
statusWindow.windowLevel = UIWindowLevelStatusBar + 1;
statusWindow.hidden = NO;
statusWindow.backgroundColor = [UIColor redColor];
[statusWindow makeKeyAndVisible];

我无法让它工作。我应该隐藏状态栏还是显示它?我已经尝试使用上面的代码隐藏和显示它,我的红色UIWindow 从未在屏幕上显示。

【问题讨论】:

  • 如果你想改变它而不是白色(浅色内容)或黑色(默认),改变状态栏颜色将不起作用。如果你想这样做,请告诉我。

标签: ios objective-c uinavigationcontroller uinavigationbar ios7-statusbar


【解决方案1】:

我终于明白了。这段代码可以完美运行:

self.statusWindow = [[UIWindow alloc] initWithFrame:CGRectMake(0, 0, 320, 20)];
self.statusWindow.windowLevel = UIWindowLevelStatusBar + 1;
self.statusWindow.hidden = NO;
self.statusWindow.backgroundColor = [UIColor redColor];
[self.statusWindow makeKeyAndVisible];

关键是,statusWindow 不能只是一个局部变量。它必须是一个实际的属性,否则它会从内存中释放。

另外,为了它的价值,我什至不必打电话给makeKeyAndVisible 就可以看到它。

【讨论】:

  • 在 Swift 中你在哪里添加这个?
【解决方案2】:

你唯一能做的就是改变它的颜色或隐藏它。您不能向其中添加子视图或隐藏其内容。

【讨论】:

  • 如何将其更改为纯色而不显示任何“状态”内容?
  • 对不起,我应该更清楚。你可以改变它的颜色。但内容将是可见的。无法隐藏其内容并显示颜色。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多