iPad模式视图控制器在关闭时旋转界面
Posted
技术标签:
【中文标题】iPad模式视图控制器在关闭时旋转界面【英文标题】:iPad modal view controller rotates interface on dismiss 【发布时间】:2014-04-17 14:09:06 【问题描述】:我正在开发的应用程序有问题,如下所示:
应用程序的窗口有一个rootViewController
,它设置为UIViewController
的自定义类(MenuViewController
)。这个视图控制器有一个自己的rootViewController
属性。无论何时设置都会发生这种情况(代码的真正简短版本):
- (void)setRootViewController:(UIViewControlelr *)rootViewController
...
_rootViewController = rootViewController;
if (self.rootViewController)
[self addChildViewController:rootViewController];
[self.view addSubview:rootViewController.view];
...
现在这个MenuViewController
可以在它的rootViewController 之上显示一个模态视图控制器。
我是这样做的:
[self.rootViewController presentModalViewController:viewController animated:YES completition:nil];
到这里为止,一切看起来都还不错。现在在 iPad 上,每当我从模态视图控制器调用 [self.presentingViewController dismissViewControllerAnimated:YES completion:nil]
时,它下方的界面都会旋转到相同的方向(即UIInterfaceOrientationLandscapeLeft
),而不管视图控制器出现时的初始方向是什么。
总之,我的视图层次结构是这样的:
Window
|
- Menu View Controller
|
- Root View Controller
|
- Modal view controller
有谁知道我该如何解决这个问题?它不会发生在 iPhone 上。
【问题讨论】:
【参考方案1】:在我看来,在 iPad 上您的 MenuViewController
的 rootViewController
支持多种界面方向,而在 iPhone 上则不支持。这是猜测,因为您对此没有说任何话。
如果是这种情况,并且 rootViewController 确实支持多个界面方向,解决方法是覆盖 - supportedInterfaceOrientations
并返回纵向,这似乎是您所建议的。
【讨论】:
我实际上已经通过实现preferredInterfaceOrientationForPresentation
并返回self.interfaceOrientation
来修复它。如果你问我很奇怪,但它确实完成了工作! :)以上是关于iPad模式视图控制器在关闭时旋转界面的主要内容,如果未能解决你的问题,请参考以下文章