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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Landscape中全屏显示UISplitViewController的DetailView相关的知识,希望对你有一定的参考价值。

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

我在横向方向上向detailView添加了一个按钮,当单击该按钮时,masterView(左侧)将隐藏,detailView将变为全屏。就像iPad的Dropbox应用程序的行为一样

现在,我可以隐藏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)更改框架,框架的位置将不会改变。

如何使detailview在横向方向上成为整个屏幕宽度?任何建议将非常感谢。

答案

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

另一答案

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

Custom SplitView

-Anup

另一答案

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

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

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

以上是关于如何在Landscape中全屏显示UISplitViewController的DetailView的主要内容,如果未能解决你的问题,请参考以下文章

如何在带有新窗口和特定显示器的窗口中全屏启动 chrome 浏览器

如何在JQM中全屏显示Fancybox图像时阻止后退按钮上的页面更改?

在 Fabric.js 中全屏显示画布

在新标签中全屏显示图像

使用 openGL 在 SDL2 中全屏显示窗口

在 WebView 中全屏视频后隐藏菜单栏和停靠