如何处理不在UINavigationController堆栈之上的UIViewController的旋转?

时间:2011-03-25 05:41:08

标签: iphone ipad uiviewcontroller uinavigationcontroller rotation

我在UINavigationController中有一个根UIViewController(VC1),它通过在willRotateToInterfaceOrientation:方法中手动调整其视图/子视图帧来处理旋转。如果根UIViewController是活动视图控制器,则旋转工作正常,基本上在堆栈顶部。

当我将另一个UIViewController(VC2)推送到NavigationController时,会出现问题。然后我旋转VC2,工作正常。但是,当我弹出VC2时,问题是VC1没有旋转到正确的方向,它的willRotateToInterfaceOrientation:方法也没有被调用?调用VC1中的shouldAutorotateToInterfaceOrientation:方法,但就是这样。

我的问题是如何确保我的UIViewController VC1已针对此类情况的当前方向进行了更新?

1 个答案:

答案 0 :(得分:1)

我解决此问题的方法是检查viewWillAppear:以查看方向现在是否与调用viewDidDisappear时的方向不同。如果是这样,我调用代码来布局视图。

采用这种方法首先考虑负责将视图布局为_layoutViews之类的代码,可以在viewWillAppear以及willRotateToInterfaceOrientation:中根据需要调用它。