更新
我最终解决了 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,也不想在这个项目中使用该类。