如何在Landscape中全屏显示UISplitViewController的DetailView

时间:2011-08-27 10:31:16

标签: ipad orientation uisplitviewcontroller

我有一个带有公共detailView(右侧)的UISplitViewController。

我向横向添加了一个按钮,当单击按钮时, masterView(左侧)将隐藏 detailView将变为全屏。就像 Dropbox app for iPad

的行为一样

现在,我可以隐藏masterView,但只需设置detailviewController.view的框架就无法将detailView更改为全屏。

splitview左侧的宽度= 321, 更改之前,detailviewController.view.frame为{{321,0},{703,748}}。

如果我按照以下代码更改detailview.frame,则没有发生任何变化

self.frame = CGRectMake(0, 0, 1024, 748);

如果我使用以下代码,它将改变位置,但不是全屏

self.frame = CGRectMake(0, 0, 703, 748);

我发现如果我用更大尺寸(例如704)更改框架而不是原始宽度,框架的位置就不会改变。

如何使细节视图在横向方向上成为整个屏幕宽度? 任何建议都将非常感激。

3 个答案:

答案 0 :(得分:0)

我看到另一种可能使用+ transitionFromView:toView:duration:options:completion:UIView的方法,用于在UIWindow视图中交换其他全屏UIView实例的UISplitViewCintroller视图

答案 1 :(得分:0)

我在下面的链接中找到了一个解决方案来创建自定义splitview控制器,你可以通过调整它来获得所需的效果。我不认为可以改变普通UISplitViewController的主视图和细节视图的帧大小(我在iOS5中试过,它没有用)。

Custom SplitView

-anoop

答案 2 :(得分:0)

这可以使用viewWillTransitionToSize方法完成,只要我们的设备方向发生变化,就会调用此方法,以下内容将帮助您实现所需目标。

-(void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator{
    self.splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModePrimaryHidden;
}

preferredDisplayMode可用于使主视图隐藏或显示或覆盖详细视图控制器。