如何在横向全屏 UISplitViewController 的 DetailView

Posted

技术标签:

【中文标题】如何在横向全屏 UISplitViewController 的 DetailView【英文标题】:How to fullscreen DetailView of UISplitViewController in Landscape 【发布时间】:2011-08-27 10:31:16 【问题描述】:

我有一个带有通用 detailView(右侧)的 UISplitViewController。

我在detailView横向添加了一个按钮,当点击按钮时,ma​​sterView(left side)会被隐藏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在横向下变成整个屏幕宽度? 任何建议将不胜感激。

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

我在以下链接中找到了创建自定义拆分视图控制器的解决方案,您可以对其进行调整以获得所需的效果。我认为无法更改普通 UISplitViewController 的主视图和详细视图的帧大小(我在 ios5 中尝试过,它没有工作)。

Custom SplitView

-anoop

【讨论】:

【参考方案3】:

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

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

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

【讨论】:

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

如何在 React Native youtube iframe 中切换到全屏(单击 YouTube 播放器 gui 上的全屏按钮旋转到横向)?

检测以纵向或横向全屏播放的视频

iOS:在 MPMoviePlayerController 中将设备方向更改为横向时如何全屏播放视频?

如何在全屏模式下开始电影或在横向播放时重新调整播放器宽度?

在 jQuery Mobile 中,如果手机倾斜到横向,如何在编辑时使文本输入全屏显示?

在全屏图像轮播中拟合纵向和横向图像