UIsplitview没有响应轮换

时间:2012-04-27 13:45:39

标签: iphone uisplitviewcontroller uiinterfaceorientation ipad

我正在使用UISplitview开发应用程序。

当我将设备从Landscap旋转到纵向时我设置了框架,但未设置。 在纵向模式下,只有detailview存在。有景观模式主视图和详细视图。

那么如何识别纵向模式下的旋转?

是否有任何一种方法?(如在视图控制器中有willAnimationRotationtoInterfaceorientation)

2 个答案:

答案 0 :(得分:1)

据我所知,您希望能够在纵向视图中看到主人。

UISplitViewController的设计专门以纵向模式隐藏主视图。

这里有两种方法可以解决这个问题。首先,将ViewController控制器声明为UISplitViewControllerDelegate。 (将控制器视为委托者?留在堆栈中的那个 - 让你弄清楚它是主人还是细节)。

然后你有几个委托方法来看看。

如果您想直接在以下委托方法中以纵向模式显示主人:

- (BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation

你返回NO(也就是你不希望它隐藏视图控制器)

默认情况下,这不适用于横向,这就是为什么你会看到两个视图,而对于肖像是,这就是你没有看到主视图的原因。

说,更优雅的解决方案可能是隐藏主视图,然后在导航栏顶部放置一个按钮,点击后,您将在portait模式下显示主视图。在主视图外部单击时,将隐藏主控。

为此,您不使用上面的BOOL方法,而是实现其他两个委托方法:

– splitViewController:willHideViewController:withBarButtonItem:forPopoverController:
– splitViewController:willShowViewController:invalidatingBarButtonItem:

UISplitViewControllerDelegate的搜索文档。

答案 1 :(得分:0)

使用适用于iPad的Master-Detail应用程序模板在Xcode中创建一个新项目。此项目模板创建一个响应界面方向的UISplitViewController。因此,它完全准确地向您展示了如何做您要做的事情。