需要将状态栏设置为纯色,或将子视图添加到状态栏

时间:2015-02-06 07:49:41

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

我正在使用UINavigationController并在我的应用中显示导航栏,但我不想向用户显示状态栏。我的问题是如果我隐藏状态栏,那么导航栏的大小不足以显示完整的导航栏。

我想做以下其中一项:

  1. 使状态栏为纯色。这不会显示任何状态栏内容,它只是颜色。

  2. 在状态栏中添加子视图,以便我可以覆盖所有状态栏"状态"内容。这个子视图只是一个纯色的UIView。

  3. 这将允许我拥有全尺寸"导航栏"在顶部,无需实际显示状态栏内容。

    编辑:

    我一直在尝试以下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从未在屏幕上显示。

2 个答案:

答案 0 :(得分: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来让它出现。

答案 1 :(得分:0)

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