适用于iOS 4.3的UISplitViewController shouldHideViewController

时间:2012-11-30 09:28:25

标签: ipad ios5 ios4 uisplitviewcontroller

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

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

始终保持双窗格布局。不幸的是,这是在iOS5中引入的。我已经看到提到以编程方式为iOS 5之前做这个,但没有设法找到任何示例代码。有没有人有任何指示?

1 个答案:

答案 0 :(得分:1)

这个区域有点滑,因为Apple已经调整了5.0,5.1中的splitview和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控制器 - 你可以在这里找到它:{{3} }。

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

现在这里是滑坡开始的地方,Matt没有更新代码几年(尽管有一些叉子已经存在),并且可能在您向前移动应用程序时难以维护。 / p>

如果不出意外,它确实包含完全符合您要求的代码,因此它可以帮助您完成项目。

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

祝你好运