ios - 切换 setStatusBarHidden 后调整每个 View 的大小以再次适合 :YES to setStatusBarHidden:NO

标签 ios user-interface overlay

我有一个 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/

相关文章:

c++ - Qt 获取事件文本框

ios - 如何在 iOS 中调暗/模糊给定矩形之外的所有内容?

ios - UIImage 动画覆盖 mapkit 覆盖

r - 用 geom_bar() 覆盖两个条形图

ios - Appium iOS模拟器设置错误

ios - 如何使带有自定义图像的后退按钮可访问?

java - 需要帮助修复与 GUI 的对齐问题

animation - 使用 ffmpeg 在视频上添加移动覆盖

ios - 将多个查询结果添加到数组中

ios - 警报 View 中的 TextField 未在 iOS 7 上显示