在 UISplitViewController 中隐藏 MasterView

Posted

技术标签:

【中文标题】在 UISplitViewController 中隐藏 MasterView【英文标题】:Hide MasterView in UISplitViewController 【发布时间】:2012-09-20 14:53:16 【问题描述】:

更新

我最终解决了 MGSplitViewController 的问题,所以我现在正在使用这个项目的分支:http://github.com/ArtSabintsev/MGSplitViewController 在编写此编辑时,分支尚未被拉入 Matt Gemmell 的主分支。

请注意

    我的 iPad 应用程序仅适用于横向,并且兼容 ios5 和 iOS6 我有一个部分可行的解决方案,但我需要更进一步。 对于我应用中的大多数屏幕,我需要同时呈现主视图和详细视图(正常行为)。 在某一时刻,我只需要出现 detailVC。

我现在怎么样了?

我正在使用下面的 UISpliterViewControllerDelegate 方法

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

    return self.hideRootViewController;

其中 hideRootViewController 是一个初始设置为 NO 的布尔值。

部分解决方案

如果我将布尔值更改为 YES(在我的应用程序中的任何屏幕/VC 中)并旋转屏幕,masterVC 就会消失,而 detailVC 会占据整个屏幕。

剩下的问题

如何在无需物理旋转设备的情况下强制进行此更改,或者如何强制更改设备方向通知以重绘 UISplitViewController?

以下尝试失败

    CGAffineTansformation(恒等式和小角度变换) 发布 UIDeviceOrientationDidChangeNotification 在 splitVC.view 上调用 setNeedsLayout 在 splitVC 上显示并立即关闭 modalVC

注意:我没有使用 MGSplitViewController,也不想在这个项目中使用该类。

【问题讨论】:

【参考方案1】:

要手动强制旋转,您可以使用:

[[UIApplication sharedApplication] setStatusBarOrientation:]

【讨论】:

【参考方案2】:

你为什么不使用mgsplitviewcontroller。我在我的项目中使用了它,它工作得很好而且很容易实现。您可以轻松隐藏/切换主视图。

【讨论】:

因为它不适用于纯横向 iOS 6 项目(至少在我的测试中它看起来很糟糕)。我不想改变那种水准的项目。我可能会检查一些叉子。 你说它看起来坏了是什么意思?图形? MG 提供的测试项目中视图显示不正确。 我没有安装 iOS 6。安装完成后我会回复您。 意思是在升级我的 xcode 时,我发现了这个。一些人声称通过修改少量代码来修复它(但我没有能力确认这一点)。这是链接:github.com/mattgemmell/MGSplitViewController/issues/69

以上是关于在 UISplitViewController 中隐藏 MasterView的主要内容,如果未能解决你的问题,请参考以下文章

UISplitViewController:在 detailView 中导航

在 UISplitViewController 中使用 SwiftUI 列表侧边栏

UISplitViewController:为啥我不应该在导航或标签栏界面中显示它?

UISplitViewController 一致分隔符

在 UISplitViewController 中隐藏 MasterView

嵌套详细视图(UISplitViewController)中缺少后退按钮