嵌入式UINavigationViewController错误地设置navigationBar高度,但更正自身

时间:2016-07-05 12:05:25

标签: ios uinavigationcontroller uinavigationbar

我将UINavigationViewController嵌入到父视图控制器中,如下所示:

-(void)presentChildController:(UINavigationViewController *)childController {
  UIView *formView = childController.view;
  formView.alpha = 0.0;
  [self.view addSubview:formView];
  [UIView animateWithDuration:0.5 animations:^{
    currentController.view.alpha = 0.0;
    formView.alpha = 1.0;
  } completion:^(BOOL finished) {
    [currentController.view removeFromSuperview];
    [currentController willMoveToParentViewController:nil];
    [currentController removeFromParentViewController];
  }];
  [self addChildViewController:childController];
  [childController didMoveToParentViewController:self];
  currentController = childController;
}

如下所示,navigationBar高度不正确。

Invalid NavigationBar Height

单击其中一个寄存器或Recover,将UINavigationViewController替换为另一个。第二个控制器使navigationBar正确。换回来,第一个也自行修复。这是第一次出错。我试过了[childController setNeedsStatusBarUpdate]但是没有效果。

NavigationBar height fixes itself

childControllers都以相同的方式创建。 我不知道下一步该尝试什么。有什么想法吗?需要任何其他信息吗?

[更新]:导航栏似乎是正确的高度。但是,它包含一个名为_UINavigationBarBackground的东西(如视图heirarchy中所示),它被设置为错误的高度。由于导航栏由UINavigationViewController控制,因此对此的任何更改似乎都是不允许的。 [更新]:即使是简单的旋转也会导致UI自行纠正。

0 个答案:

没有答案