我正在使用UINavigationController
并在我的应用中显示导航栏,但我不想向用户显示状态栏。我的问题是如果我隐藏状态栏,那么导航栏的大小不足以显示完整的导航栏。
我想做以下其中一项:
使状态栏为纯色。这不会显示任何状态栏内容,它只是颜色。
在状态栏中添加子视图,以便我可以覆盖所有状态栏"状态"内容。这个子视图只是一个纯色的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
从未在屏幕上显示。
答案 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)
你唯一能做的就是改变它的颜色或隐藏它。您无法向其添加子视图或隐藏其内容。