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

Ios 需要将状态栏设置为纯色,或将子视图添加到状态栏,ios,objective-c,uinavigationcontroller,uinavigationbar,ios7-statusbar,Ios,Objective C,Uinavigationcontroller,Uinavigationbar,Ios7 Statusbar,我正在使用UINavigationController并在整个应用程序中显示导航栏,但我不想向用户显示状态栏。我的问题是,如果我隐藏状态栏,那么导航栏的大小就不足以显示完整的导航栏 我想做以下工作之一: 将状态栏设置为纯色。这将不会显示任何状态栏的内容,它将字面上只是颜色 在状态栏中添加一个子视图,这样我就可以覆盖它的所有“状态”内容。此子视图将只是一个纯色的UIView 这将允许我在顶部有完整大小的“导航栏”,而不必实际显示状态栏内容 编辑: 我一直在尝试以下UIWindow解决方案,但运气不

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

我想做以下工作之一:

  • 将状态栏设置为纯色。这将不会显示任何状态栏的内容,它将字面上只是颜色

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

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

    编辑:

    我一直在尝试以下
    UIWindow
    解决方案,但运气不佳。正在my view controller的一个
    视图中调用以下代码:
    方法:

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

    我不能让它工作。我应该隐藏状态栏还是显示状态栏?我试过用上面的代码隐藏和显示它,但我的红色
    ui窗口从来不会显示在屏幕上。

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

    我终于明白了。此代码确实非常有效:

    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中的何处添加此选项?