为什么状态栏旋转并且视图保持纵向

时间:2013-08-12 14:58:19

标签: iphone ios autorotate uistatusbar

我的rootViewController是UITabbarController并包含UINavigationController s。

为了限制旋转,因为iOS6,在某些但不是所有视图上,我已经将这两个控制器子类化,以尊重最顶层或可见视图的shouldAutorotate响应。

这一切都很完美......大部分时间。

在一种情况下,从不允许旋转的视图(UITableviewController)开始。

我推动一个允许自动旋转的视图,旋转到横向然后再回到肖像。

然后当我弹出视图时,一切都很好。

但是现在如果我旋转设备,状态栏会单独旋转,在顶部留下一个空白区域并覆盖当前视图左侧的一部分。当前视图不会旋转(因为它不应该旋转)。只有状态栏来回旋转。视图保持响应,接收触摸并正常工作,不会以任何方式调整大小或响应轮换(因为它不应该)。

此行为一直持续到我终止并重新启动应用程序为止。一旦它发生,我找不到其他方法让它停止。重新启动时,所有工作正常,并将在不确定的持续时间内正常工作。我可以坐在那里推动,弹出,来回旋转我心中的内容,没有任何问题。

我从来没有能够在模拟器中重新创建它。

它没有明显的原因,我无法实现。我会说有85%的时间它正常工作。当我没有发生几天甚至几周时,我以为我已经多次修复了它。然后,它突然发生了。

我在任何描述此行为的论坛中找不到帖子,所以我甚至找不到开始调试的地方。状态栏如何从顶部到另一侧摆动,视图不会以任何方式调整大小或旋转或响应。如果我知道如何实现这一目标,我将有一席之地。

1 个答案:

答案 0 :(得分:6)

我在添加子类UIWindow时遇到了同样的问题(在我的情况下,状态栏覆盖)。

解决方案是将此新rootViewController的{​​{1}}设置为已实施UIWindow的子类UIViewController。这阻止了状态栏在不应该旋转时旋转。