需要将状态栏设置为纯色,或将子视图添加到状态栏
Need to either set status bar to solid color, or add subview to status bar
我正在使用 UINavigationController
并在整个应用程序中显示导航栏,但我不想向用户显示状态栏。我的问题是,如果我隐藏状态栏,那么导航栏的大小就不够大,无法呈现完整的导航栏。
我想执行以下操作之一:
将状态栏设为纯色。这不会显示任何状态栏内容,它实际上只是颜色。
向状态栏添加一个子视图,这样我就可以覆盖它的所有 "status" 内容。这个子视图只是一个纯色的 UIView。
这样我就可以在顶部显示全尺寸 "nav bar",而不必实际显示状态栏内容。
编辑:
我一直在尝试以下 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
从未在屏幕上显示。
您唯一能做的就是改变它的颜色或隐藏它。您不能向其添加子视图或隐藏其内容。
我终于明白了。此代码确实可以完美运行:
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
就可以显示它。
我正在使用 UINavigationController
并在整个应用程序中显示导航栏,但我不想向用户显示状态栏。我的问题是,如果我隐藏状态栏,那么导航栏的大小就不够大,无法呈现完整的导航栏。
我想执行以下操作之一:
将状态栏设为纯色。这不会显示任何状态栏内容,它实际上只是颜色。
向状态栏添加一个子视图,这样我就可以覆盖它的所有 "status" 内容。这个子视图只是一个纯色的 UIView。
这样我就可以在顶部显示全尺寸 "nav bar",而不必实际显示状态栏内容。
编辑:
我一直在尝试以下 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
从未在屏幕上显示。
您唯一能做的就是改变它的颜色或隐藏它。您不能向其添加子视图或隐藏其内容。
我终于明白了。此代码确实可以完美运行:
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
就可以显示它。