2014-05-01 308 views
0

我已将UITabBarController设置为AppDelegate中的根视图控制器。UINavigationBar高度错误,因为状态栏在加载时隐藏

我在窗口中添加了一个加载视图,而应用程序下载了一些数据。当加载屏幕可见时,我隐藏了状态栏。一旦加载完成,我会淡化加载视图并再次显示状态栏。

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

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

所以我基本上想要让导航抽屉在加载视图消失时获得状态栏和内容的正确高度。我怎样才能做到这一点?

回答

3

您是否尝试重置导航和状态栏,如下所示?

-(void)resetNavigationBar 
{ 
    [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone]; 

    [self.navigationController setNavigationBarHidden:YES]; 

    [self.navigationController setNavigationBarHidden:NO]; 
} 
+0

这个答案很好,但是你应该改变setStatusBarHidden:从YES到NO。 –

0

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

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