如何确保视图控制器在呈现其他视图控制器时获得关于旋转的通知?
问题描述:
我一直在寻找这个答案很长一段时间,但没有发现任何相关的东西。如何确保视图控制器在呈现其他视图控制器时获得关于旋转的通知?
在我的应用程序中,我有一个相当复杂的视图控制器层次结构,ECSlidingViewController实例位于其根。在iPad上,横向和纵向模式之间存在很大差异(例如,控制器通常是纵向的主控制器的根视图控制器,横向的控制器则成为容纳所有其他控制器的新导航控制器的容器),所以确保视图控制器得到适当的轮换通知是应用程序工作的关键。我的ECSlidingViewController(也不是它的顶部视图控制器)没有得到didRotateFrom(..)和willRotateTo(..),但是当用户旋转设备时,方法称为。
那么如何让我的其他视图控制器也得到轮换的通知呢? (不是在直接调用didRotateFrom(..)和willRotateTo(..),因为它不会改变它们的帧)。
答
您的视图控制器并不总是在发生旋转时得到通知,例如您的情况。
但是,有一件事总是叫:
- (void)viewWillLayoutSubviews {
[super viewWillLayoutSubviews];
}
你可以在这里检查,如果你的方向发生了变化,并根据它改变你的接口。
这就是我在我的应用程序中所做的。
我想你可以看到''UIApplicationWillChangeStatusBarOrientationNotification和实施自己的循环相关的方法(当然,在你的父视图控制器,而不是直接从模态视图控制器调用)。 – ismailgulek
但是,AFAIK,它不会调整我的ViewController视图的框架。 :( – johnyu
你是对的,但我认为没有办法自动完成,请让我们知道,如果你找到一个。 – ismailgulek