在 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:为啥我不应该在导航或标签栏界面中显示它?