模态视图控制器优于呈现视图控制器

Posted

技术标签:

【中文标题】模态视图控制器优于呈现视图控制器【英文标题】:Modal view controller over Presenting view controller 【发布时间】:2014-12-21 18:46:10 【问题描述】:

我有一个视图控制器,我以模态方式呈现在另一个视图控制器上,顶部 VC 的背景视图具有模糊效果。当我使用以下代码时,顶视图控制器出现在底视图控制器上方,但顶部控制器隐藏在导航栏后面:

MOSettingsViewController *settingsViewController = [[MOSettingsViewController alloc]init];
settingsViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
settingsViewController.modalPresentationStyle = UIModalPresentationOverCurrentContext;
self.providesPresentationContextTransitionStyle = YES;
self.definesPresentationContext = YES;
[self presentViewController:settingsViewController animated:YES completion:nil];

当我删除settingsViewController.modalPresentationStyle... 行时,新的视图控制器出现在导航栏上,但呈现的视图控制器变黑,并破坏了模糊效果。

我怎样才能获得这两种演示的混合,其中呈现视图控制器保持可见并且导航栏位于呈现的视图控制器下方?

【问题讨论】:

【参考方案1】:

我需要使用UIModalPresentationOverFullScreen,而不是UIModalPresentationOverCurrentContext

【讨论】:

这没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。 @Raedwald 我是作者,通过更改那段代码,它解决了我的问题 也解决了我的问题!当我使用UIModalPresentationOverCurrentContext 时,会出现通话状态栏,但 AutoLayout 不起作用并调整视图层次结构。 UIModalPresentationOverFullScreen 现在一切正常!

以上是关于模态视图控制器优于呈现视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

如何从模态视图控制器调用呈现视图控制器的方法

从模态视图呈现视图控制器给出错误

关闭当前的模态视图控制器,然后呈现新的模态视图控制器

将模态呈现的视图控制器关闭到不同的底层视图控制器

关闭模态视图控制器后呈现不同的视图控制器

如何在模态呈现的视图控制器上执行呈现模态序列?