我有一个 UIView,我想将其添加到 keyWindow 中,以便它覆盖所有内容(包括 StatusBar)。当我添加 View 时,我使用以下代码删除状态栏:
[[UIApplication sharedApplication].keyWindow addSubview:aView];
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
aView.frame = [[UIApplication sharedApplication].keyWindow bounds];
一切看起来都如预期。如果我然后删除 View 并再次添加状态栏,则一切都很好。但是,当我旋转设备然后删除 View 时,就会出现问题。 UI 现在部分被状态栏(在本例中为导航栏)覆盖。旋转设备会立即调整所有内容的大小,以便 UI 看起来再次正常。
如何确保 UI(任何 UI!)知道 StatusBar 再次取消隐藏,以便在 UIView 从 keyWindow 中删除后立即自动调整。?
无论应用程序中的 UI 类型如何,该解决方案都应该有效。在这个特定的示例中,我碰巧使用了选项卡栏和导航 Controller ,但情况并非总是如此。
最佳答案
我刚刚解决了这个问题。
在我的情况下,这是由你调用方法的顺序引起的。有时动画可能也与此有关。
例如,在我的情况下:
//调用setStatusBarHidden后调用当前 View Controller
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
[modalPresentedViewController presentModalViewController:self animated:YES];
//在调用dismiss方法之前调用setStatusBarHidden。
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
[modalPresentedViewController presentModalViewController:self animated:YES];
我希望这会有所帮助。
关于ios - 切换 setStatusBarHidden 后调整每个 View 的大小以再次适合 :YES to setStatusBarHidden:NO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9939405/