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

时间:2014-05-01 08:30:16

标签: ios objective-c ios7 uinavigationbar

我在UITabBarController

中设置了AppDelegate作为根视图控制器

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

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

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

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

2 个答案:

答案 0 :(得分:3)

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

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

    [self.navigationController setNavigationBarHidden:YES];

    [self.navigationController setNavigationBarHidden:NO];
}

答案 1 :(得分:0)

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

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