2

我在 viewDidLoad 中隐藏了状态栏和导航栏

- (void)viewDidLoad {
    [super viewDidLoad];
    
    [self.navigationController setNavigationBarHidden:YES animated:YES];
    [[UIApplication sharedApplication] setStatusBarHidden:YES];
}

一切正常。但是,当我关闭视图控制器时,在 viewWillDisappear: 我做:

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    [self.navigationController setNavigationBarHidden:NO animated:YES];
    [[UIApplication sharedApplication] setStatusBarHidden:NO];
}

这导致我的所有观点都处于不利地位: 在此处输入图像描述

我究竟做错了什么?谢谢

4

2 回答 2

1

我没有尝试过,所以我只是猜测。您的导航栏设置了一个框架,就好像没有Status bar. 有些事情是以错误的顺序完成的。
因此,在您的代码中,我看到当导航栏被要求在没有状态栏的情况下可见时。

[self.navigationController setNavigationBarHidden:NO animated:YES];    
[[UIApplication sharedApplication] setStatusBarHidden:NO];

您是否尝试过反转这两条线?(我只是猜测)

我的另一个测试是设置 viewDidAppear 中可见的导航栏。
那时 applicationFrame 应该已经更新为状态栏再次可见的事实。


我已经对其进行了测试,并反转调用使其工作。但是你不会得到导航栏和状态栏的动画。如果你想要他们,我建议你把那些电话打进来viewWillAppear或打进来viewDidAppear

于 2012-08-21T03:03:49.673 回答
0

我认为,当显示导航栏时,应用程序状态栏仍然隐藏,因此导航栏 offsetY 为 0。您应该更改两种调用方法的顺序。

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    [[UIApplication sharedApplication] setStatusBarHidden:NO];
    [self.navigationController setNavigationBarHidden:NO animated:YES];
}
于 2012-08-21T03:01:19.273 回答