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

时间:2014-06-15 04:33:16

标签: ios user-interface statusbar

我知道这个问题已被问过几次,我看到的解决方案非常有帮助。但由于我有两个相互矛盾的要求,我有点搁浅,希望能找到一些帮助。

以下是要求:

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

    根据其他一些帖子中的建议,我做了以下

    1. 将UIViewControllerBasedStatusBarAppearance设置为NO
    2. 在app delegate

      中添加了此代码

      CGRect frame = [[UIScreen mainScreen] bounds];

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

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

    3. 如果我只留在具有状态栏的那些View控制器中,它可以正常工作。

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

      enter image description here

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

      enter image description here 我试图通过重置view.frame并请求布局来重新推送视图,但它没有生效。

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

1 个答案:

答案 0 :(得分:0)

不要在app delegate中更改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中的视图将具有不同的帧。