0

我正在将我的 iPhone 应用程序转换为 iPad 并使用

-(BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation
{
    return NO;
}

始终保持双窗格布局。不幸的是,这是在 iOS5 中引入的。我已经看到提到以编程方式为 pre-iOS 5 执行此操作,但没有设法找到任何示例代码。请问有人有什么指点吗?

4

1 回答 1

1

这个区域有点滑,因为 Apple 一直在 5.0、5.1 和 6.0 中调整拆分视图和旋转

不是翻转,但如果您可以将您的应用程序移动到需要 5.0,这将是实现您的目标的最简单方法。

如果您想自己执行此操作,则基本上需要劫持弹出框并在您自己的框架中重新实现。有一种方法叫:

- (void)splitViewController:(UISplitViewController *)splitController willHideViewController:(UIViewController *)viewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)newpopoverController

在此方法中,您可以抓取 viewController 并将其存储。

然后在纵向使用时感应:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

,您需要获取详细视图并对其进行调整 - 为左侧的新框架腾出空间,您可以使用从上一个方法中获取参考的视图控制器填充该框架。

它有点杂耍。

如果您真的非常需要保持 4.3 的兼容性并且想要该功能,我建议您查看由 Matt Gemmell 开发的名为 MGSplitViewController 的开源 SplitView 控制器 - 您可以在此处找到它:https ://github.com/mattgemmell /MGSplitViewController

他的实现非常好,不仅会为您提供该功能,还会为您提供与屏幕上的视图位置相关的其他几个选项。

现在这里是滑坡开始的地方,Matt 已经有几年没有更新代码了(尽管有一些分支已经更新了),并且随着您的应用程序向前推进,可能会变得难以维护。

如果没有别的,它确实包含完全符合您想要做的代码,因此它将是帮助您完成项目的绝佳参考。

抱歉,我无法提供完整的配方,但实际上,无论您使用它还是仅将其用作参考,该库都应该有所帮助。

祝你好运

于 2012-11-30T14:06:00.657 回答