ios 7中的黑色状态栏 - 次要问题

Posted

技术标签:

【中文标题】ios 7中的黑色状态栏 - 次要问题【英文标题】:Black status bar in ios 7 - secondary issue 【发布时间】:2014-08-05 06:26:31 【问题描述】:

我知道这个问题已经被问过好几次了,我看到的解决方案非常有帮助。但由于我有 2 个相互冲突的要求,我有点束手无策,希望能得到一些帮助。

所以这里是要求:

    我们有多个视图控制器,其中只有一个需要全屏(顶部没有状态栏)。 其他视图控制器需要显示黑色状态栏和深灰色导航栏

First View 控制器嵌入在导航控制器中。

按照其他一些帖子中的建议,我做了以下操作

    将 UIViewControllerBasedStatusBarAppearance 设置为 NO

    在应用委托中添加了此代码

    CGRect frame = [[UIScreen mainScreen] bounds];

    self.window.frame = CGRectMake(0,20,frame.size.width, frame.size.height-20);

    self.window.bounds = self.window.frame;

如果我只停留在那些有状态栏的视图控制器中,它就可以正常工作。

当我打开全屏视图控制器时,VC 在顶部被切断,如图所示。

此外,当我回到主视图控制器时,现在它也向上移动了,并且标题栏是显示状态栏的位置。

我试图通过重置 view.frame 并请求布局来将视图向下推,但它没有生效。

关于如何解决此问题的任何建议?

【问题讨论】:

【参考方案1】:

不要更改应用委托中的 self.window.bounds。相反,在您的视图控制器中尝试这样的事情:

-(void)viewWillAppear:(BOOL)animated

    [self.navigationController setNavigationBarHidden:YES/NO animated:YES];
    [self setNeedsStatusBarAppearanceUpdate]; // For showing/hiding status bar
    [super viewWillAppear:animated];


- (BOOL)prefersStatusBarHidden 
    return YES/NO;

根据是否有状态栏和导航栏,ViewDidLoad中的view会有不同的frame。

【讨论】:

嗨,感谢@pallakg 的回复,但它不起作用。出于某种原因,我似乎无法在初始启动后打开或关闭它

以上是关于ios 7中的黑色状态栏 - 次要问题的主要内容,如果未能解决你的问题,请参考以下文章

在 IOS 7 中将状态栏颜色设置为黑色

在ios 7中将UI状态栏的背景颜色设置为黑色

iOS 6 + 7 中的 iOS 隐藏状态栏和标签栏

如何在iOS 7上更改状态栏背景颜色和文本颜色? Warif Akhand Rishi

iPhone 5/SE 显示白色状态栏,iPhone 6/7 显示黑色状态栏

状态栏文本颜色iOS 7 [重复]