UINavigationBar有错误的高度,因为状态栏是隐藏的,而加载



我已经将UITabBarController设置为AppDelegate中的根视图控制器。

我在窗口上添加了一个加载视图,而应用程序下载一些数据。我已经隐藏了状态栏,而加载屏幕是可见的。加载完成后,我将淡出加载视图并再次显示状态栏。

我的问题是,当我显示状态栏时,导航栏没有绘制到正确的高度,因为状态栏在绘制时是隐藏的。如果我切换到另一个选项卡,它会得到正确的高度。

我已经尝试了[navigationController.view setNeedsLayout],但这似乎得到ViewController的视图的位置正确,但导航栏的内容不调整大小。我也尝试过[navigationController.navigationBar setNeedsLayout],但这确实有帮助。

所以我基本上想让导航抽屉在加载视图淡出时获得状态栏和内容的正确高度。我该怎么做呢?

你试过像下面这样重置导航栏和状态栏吗?

-(void)resetNavigationBar
{
    [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
    [self.navigationController setNavigationBarHidden:YES];
    [self.navigationController setNavigationBarHidden:NO];
}

我会在加载视图的viewWillDisappear:方法中取消隐藏状态栏。

- (void)viewWillDisappear:(BOOL)animated
{
     [super viewWillDisappear:animated];
     [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
}

最新更新