UIViewController里面的ViewController根不能旋转

我有一个UIViewController,我想作为一个独立的层在整个应用程序的顶部添加。 所以我尝试在应用程序委托中使用[self.window addSubview:viewController.view]将其添加到UIWindow。

但是,当用户旋转设备,我没有在我的视图控制器中的willRotateToInterfaceOrientation事件。 所以我尝试做这里build议:我添加我的视图控制器作为应用程序委托窗口的根视图控制器的子视图,但我的willRotateToInterfaceOrientation仍然没有被调用。

我该怎么办?

你的rootViewController充当一个容器视图控制器。

在iOS 5.0和更高版本中,自定义UIViewController子类现在可以充当容器视图控制器。 UINavigationController和UITabBarController类是UIKit提供的容器视图控制器的示例。 容器视图控制器背后的想法是,它从包含的视图控制器(也称为其子视图控制器)pipe理内容的呈现。 子内容可以原样显示,也可以与容器视图控制器pipe理的其他自定义视图一起呈现。

你正在做的是实现一个自己的视图层次结构,所以你有责任沿着这个层次结构传递UILifecycle-Events。 iOS> = 5.0支持你创build这样的容器viewControllers,提供

- (void)addChildViewController:(UIViewController *)childController - (BOOL)automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers 

方法(和更多)。 对于iOS <5.0,您将不得不手动执行此操作。

在你的rootViewController中,你应该持有一个对你的independentLayerController的引用,并转发willRotateToInterfaceOrientation。

你的rootViewController会收到消息,你可以在independentLayerController上调用willRotateToInterfaceOrientation。