【问题标题】:Presenting a modal view controller over only one half of a split view controller仅在拆分视图控制器的一半上呈现模态视图控制器
【发布时间】:2012-09-27 14:13:13
【问题描述】:

我正在调整现有的 iPhone 应用以在 iPad 上运行。在 iPhone 版本中,当用户点击工具栏按钮时,我会呈现一个带有 modalTransitionStyle 或 UIModalTransitionStyleFlipHorizontal 的模态视图控制器,它制作了一个非常漂亮的“卡片翻转”动画。

iPad 界面基于拆分视图(实际上是MGSplitViewController)。工具栏按钮位于详细信息窗格中,因此当我展示模态视图控制器时,它会占据整个屏幕,并且翻转过渡毫无意义。

为了获得正确的用户交互,我希望模态控制器出现并仅在详细视图控制器上翻转到位,而使主视图控制器保持原样。

有什么办法吗?

【问题讨论】:

  • @parilogic 不幸的是,这就是我已经在做的事情:即我正在从拆分视图控制器进行演示。模态控制器仍然覆盖整个屏幕。
  • 嗯等等。你必须通过DetailViewController的实例来呈现它。
  • 两者都不起作用。我已经尝试过拆分视图控制器和详细视图控制器。两者都占据了整个屏幕。

标签: ios uiviewcontroller uisplitviewcontroller modalviewcontroller ipad


【解决方案1】:
UIViewController *viewController = [[UIViewController alloc] init];
viewController.modalPresentationStyle = UIModalPresentationCurrentContext;

[self presentViewController:viewController animated:YES completion:nil];

【讨论】:

  • 我实际上最终使用了这个解决方案并放弃了翻转。谢谢!
  • 演示风格会根据您运行的是 iOS 7 还是 iOS 8 而有所不同:stackoverflow.com/questions/29242286
【解决方案2】:

也许您可以将其视图添加为 DetailViewcontroller 的子视图,并使用 UIview 动画使其看起来像模态。 Reference to [UIView transitionFromView:toView:duration:options:completion]

编辑 在观看 WWDC2010 视频(第 123 节:构建动画驱动的界面)时,我偶然发现我可以用不同的方式进行相同的转换。我对编码进行了示例,它起作用了:)

就是使用另一个非常相似的API[UIView transitionWithView:duration:options:animations:completion:]

我的示例代码如下

// Within your DetailViewController
[self.view addSubview:self.flipSideView];
[UIView transitionWithView:self.view duration:0.8 options:UIViewAnimationOptionTransitionFlipFromLeft animations:^{} completion:nil];

是的,就是这样。只需将翻转视图添加为子视图并使用transitionWithView:... 动画而不是transitionFromView...。

【讨论】:

  • 这听起来很有希望。让我试试看。
  • 同样的事情 - 模态视图控制器似乎总是展开以占据整个屏幕。它包含在导航控制器中,顺便说一句,但我需要导航控制器。
  • 似乎 UIViewAnimationOptionTransitionFlipFromLeft 是问题所在——即使我调整导航控制器的大小,整个屏幕也会翻转——而不仅仅是细节控制器。
  • 你好@Bill,我不确定你是否还在跟踪这个问题,但我刚刚想出了一个可行的答案并相应地编辑了我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-03
  • 2016-02-03
  • 1970-01-01
相关资源
最近更新 更多