模态呈现的 UIViewController 隐藏状态栏,但在关闭时不会再次显示

Modally presented UIViewController hides status bar, but doesn't show it again on dismiss

所以我有一个视图控制器 modalVC,我从情节提要中实例化并通过 [self presentViewController:modalVC animated:YES completion:nil] 模态呈现。

问题是当模态视图显示时,状态栏隐藏(我确实想要这样,即使我没有明确指示这样做),但是当模态控制器被关闭时(通过[self dismissViewControllerAnimated:YES completion:nil]),状态栏保持隐藏状态.

我重申,据我所知,我没有发出任何明确的命令来隐藏状态栏。 None 我的视图控制器正在覆盖 prefersStatusBarHidden,我没有在任何地方调用 setStatusBarHidden。我假设这只是默认的模态表示。

但是为什么我的状态栏没有重新出现?

关闭模态使用 dismissViewControllerAnimated:YES, 并致电

[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:YES]; 

之前

dismissViewControllerAnimated:YES

确保条形图绘制在正确的位置(当您在模态视图中将 wantsFullScreenLayout 设置为 YES 时可能会发生这种情况)

我傻了。原来我在模式视图出现时设置了 statusBarHidden = YES

危机化解!

对于可能最终落在这里的其他人用头撞墙 几个小时,试图弄清楚为什么他们的状态栏被隐藏,请记住 如果 supportedInterfaceOrientations returns 方向无效,向你的状态说再见 iPhone X 设备上的 bar

在我们的例子中 supportedInterfaceOrientations 返回了 0(即 not a valid UIInterfaceOrientationMask orientation),但没有错误。唯一的副作用是在我们以模态方式呈现另一个视图控制器后状态栏被隐藏了。

希望能救人。