我目前正在为iPad构建一个应用程序,其中视图结构完全不同,具体取决于设备方向。
当应用程序处于纵向状态时,我使用ECSlidingViewController库来支持左右滑动菜单(如facebook或path)。
当app处于横向状态时,我需要显示一个splitviewcontroller,以便左手菜单始终可见。
有人知道这个问题的最佳解决方案吗?
我已经尝试在检测到方向更改时更改UIWindow的RootViewController,但这会产生一些非常奇怪的结果....
答案 0 :(得分:1)
有几种方法可以做到这一点。有些比其他更好,但主要取决于您特定情况的需要。
rootViewController
。 UISplitViewController
并使用segue
与replace
替换detailViewController
。addChildViewController:
和removeFromParentViewController:
非常粗略的选择3。
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
[self.childViewControllers[0].view removeFromSuperView];
[self.childViewControllers[0] removeFromParentViewController];
if (UIInterfaceOrientationIsPortrait(toInterfaceOrientation)) {
[self addChildViewController:portraitVC];
[self.view addSubview:portraitVC.view];
} else {
[self addChildViewController:landscapeVC];
[self.view addSubview:landscapeVC.view];
}
}
从你所说的,我猜选项3将是最合适的。尽管如此,我并不完全相信你需要切换视图控制器,但我不熟悉ECSlidingViewController
及其提供的内容所以我无法确定。