我的rootViewController是UITabbarController
并包含UINavigationController
s。
为了限制旋转,因为iOS6,在某些但不是所有视图上,我已经将这两个控制器子类化,以尊重最顶层或可见视图的shouldAutorotate响应。
这一切都很完美......大部分时间。
在一种情况下,从不允许旋转的视图(UITableviewController)开始。
我推动一个允许自动旋转的视图,旋转到横向然后再回到肖像。
然后当我弹出视图时,一切都很好。
但是现在如果我旋转设备,状态栏会单独旋转,在顶部留下一个空白区域并覆盖当前视图左侧的一部分。当前视图不会旋转(因为它不应该旋转)。只有状态栏来回旋转。视图保持响应,接收触摸并正常工作,不会以任何方式调整大小或响应轮换(因为它不应该)。
此行为一直持续到我终止并重新启动应用程序为止。一旦它发生,我找不到其他方法让它停止。重新启动时,所有工作正常,并将在不确定的持续时间内正常工作。我可以坐在那里推动,弹出,来回旋转我心中的内容,没有任何问题。
我从来没有能够在模拟器中重新创建它。
它没有明显的原因,我无法实现。我会说有85%的时间它正常工作。当我没有发生几天甚至几周时,我以为我已经多次修复了它。然后,它突然发生了。
我在任何描述此行为的论坛中找不到帖子,所以我甚至找不到开始调试的地方。状态栏如何从顶部到另一侧摆动,视图不会以任何方式调整大小或旋转或响应。如果我知道如何实现这一目标,我将有一席之地。
答案 0 :(得分:6)
我在添加子类UIWindow
时遇到了同样的问题(在我的情况下,状态栏覆盖)。
解决方案是将此新rootViewController
的{{1}}设置为已实施UIWindow
的子类UIViewController
。这阻止了状态栏在不应该旋转时旋转。