1

更新

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

请注意

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

我现在怎么样了?

我正在使用以下 UISpliterViewControllerDelegate 方法

- (BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation
{
    return self.hideRootViewController;
}

其中 hideRootViewController 是一个布尔值,最初设置为 NO。

部分解决方案

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

剩下的问题

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

以下尝试失败

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

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

4

2 回答 2

0

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

[[UIApplication sharedApplication] setStatusBarOrientation:]
于 2012-09-20T15:04:23.003 回答
-1

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

于 2012-09-20T15:16:56.337 回答