我目前正在为 iPad 构建一个应用程序,其中视图结构完全不同,具体取决于设备方向。
当应用程序处于纵向时,我使用 ECSlidingViewController 库来支持左右滑动菜单(如 facebook 或路径)。
当应用程序处于横向时,我需要显示一个 splitviewcontroller,以便始终可见左侧菜单。
有人知道这个问题的最佳解决方案吗?
当检测到方向更改时,我尝试更改 UIWindow 的 RootViewController 但这给出了一些非常奇怪的结果......
我目前正在为 iPad 构建一个应用程序,其中视图结构完全不同,具体取决于设备方向。
当应用程序处于纵向时,我使用 ECSlidingViewController 库来支持左右滑动菜单(如 facebook 或路径)。
当应用程序处于横向时,我需要显示一个 splitviewcontroller,以便始终可见左侧菜单。
有人知道这个问题的最佳解决方案吗?
当检测到方向更改时,我尝试更改 UIWindow 的 RootViewController 但这给出了一些非常奇怪的结果......
有几种方法可以做到这一点。有些比其他更好,但主要取决于您的具体情况的需要。
rootViewController
如您在轮换期间提到的那样更换。UISplitViewController
和使用segue
to withreplace
来替换。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
它提供的内容,所以我不能确定。