状态栏隐藏后推送视图?

时间:2016-05-12 21:45:46

标签: ios uiviewcontroller uinavigationcontroller ios9 uistatusbar

我有一个没有状态栏的UIViewController,它会启动另一个有状态栏的UIViewController

如果扩展状态栏处于活动状态,两个视图都显示正确,但是当我退出第二个视图并返回到第一个视图时,我看到顶部有一个20pt黑色条,整个视图被向下推,遮住了底部。

我尝试将帧重置为viewDidAppear中的原点0,0,但它没有效果。

为什么视图被推下来,我该如何解决?

- (BOOL)prefersStatusBarHidden {
   return YES;
}

- (void)viewDidAppear:(BOOL)animated {
   [super viewDidAppear:animated];
   self.view.frame = CGRectMake(0, 0, self.width, self.height);
   self.view.backgroundColor = [UIColor redColor];
}

- (void)openShare {
  Share *share = [[Share alloc] init];
  UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:share];

  nav.modalTransitionStyle = UIModalPresentationPopover;
  [self presentViewController:nav animated:YES completion:nil];
}

调用openShare之前的视图顶部:

enter image description here

Share出现并被驳回之后的视图顶部:

enter image description here

1 个答案:

答案 0 :(得分:0)

昨天我在我的应用程序中遇到了完全相同的问题。

我做了两件事来解决这个问题。

  1. 我在navigationBar上设置Top Space to: Top Layout Guide约束,常量为20(与状态栏高度相同)
    Constaint
  2. 我在有问题的控制器中添加了这个([self.view layoutSubviews]

    -(void)viewDidAppear:(BOOL)animated {
        [super viewDidAppear:animated];
    
        [self.view layoutSubviews];
    }