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

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

所以这里是要求:

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

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

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

  1. 将 UIViewControllerBasedStatusBarAppearance 设置为 NO
  2. 在应用委托中添加了此代码

    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 并请求布局来将视图向下推,但它没有生效。

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

【问题讨论】:

    标签: ios user-interface statusbar


    【解决方案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 的回复,但它不起作用。出于某种原因,我似乎无法在初始启动后打开或关闭它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-13
    • 1970-01-01
    相关资源
    最近更新 更多