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

更新

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

【问题讨论】:

    标签: objective-c ios cocoa-touch ipad uisplitviewcontroller


    【解决方案1】:

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

    [[UIApplication sharedApplication] setStatusBarOrientation:]

    【讨论】:

      【解决方案2】:

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

      【讨论】:

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