我在UINavigationController中有一个根UIViewController(VC1),它通过在willRotateToInterfaceOrientation:方法中手动调整其视图/子视图帧来处理旋转。如果根UIViewController是活动视图控制器,则旋转工作正常,基本上在堆栈顶部。
当我将另一个UIViewController(VC2)推送到NavigationController时,会出现问题。然后我旋转VC2,工作正常。但是,当我弹出VC2时,问题是VC1没有旋转到正确的方向,它的willRotateToInterfaceOrientation:方法也没有被调用?调用VC1中的shouldAutorotateToInterfaceOrientation:方法,但就是这样。
我的问题是如何确保我的UIViewController VC1已针对此类情况的当前方向进行了更新?
答案 0 :(得分:1)
我解决此问题的方法是检查viewWillAppear:
以查看方向现在是否与调用viewDidDisappear
时的方向不同。如果是这样,我调用代码来布局视图。
采用这种方法首先考虑负责将视图布局为_layoutViews
之类的代码,可以在viewWillAppear
以及willRotateToInterfaceOrientation:
中根据需要调用它。