iOS 7 覆盖 CurrentContext 模态呈现
iOS 7 overrides CurrentContext modal presentation
我有一个非常标准的视图层次结构,主要是 UITabBarController
包含几个 UINavigationController
。
我正在创建一个新的 UINavigationController
并在其中一个选项卡中以模式方式呈现它。
我想让它显示 UIModalPresentationCurrentContext
,所以我这样设置:
[newNavCon setModalPresentationStyle:UIModalPresentationCurrentContext];
然后,我这样呈现:
[oldNavCon presentViewController:newNavCon animated:YES completion:nil];
但是当它出现时,它是全屏的,而不是我设置的当前上下文。
当我查看断点时,newNavCon
上的模式呈现样式在 presentViewController
之后立即更改为 UIModalPresentationFullScreen
。
真正让我感到困惑的是这种行为仅发生在iOS7。它在 iOS 8-10 上完全按照预期工作。
为什么会这样?在 iOS7 上有什么我不知道的特殊怪癖吗?为什么演示文稿样式会像这样被覆盖?
编辑:
澄清一下,这是我正在使用的视图层次结构:
UIViewController
(作为容器,全屏)
UITabBarController
(非全屏,由容器控制)
definesPresentationContext
UINavigationController
(作为选项卡根,呈现模态window)
definesPresentationContext
UINavigationController
(由上面UIViewController
模态呈现)
modalPresentationStyle
= UIModalPresentationCurrentContext
UIViewController
我猜您是在 iPhone 设备或模拟器上进行测试。在 iOS 7 及之前,UIModalPresentationCurrentContext
是一个 iPad-only 特征。
我有一个非常标准的视图层次结构,主要是 UITabBarController
包含几个 UINavigationController
。
我正在创建一个新的 UINavigationController
并在其中一个选项卡中以模式方式呈现它。
我想让它显示 UIModalPresentationCurrentContext
,所以我这样设置:
[newNavCon setModalPresentationStyle:UIModalPresentationCurrentContext];
然后,我这样呈现:
[oldNavCon presentViewController:newNavCon animated:YES completion:nil];
但是当它出现时,它是全屏的,而不是我设置的当前上下文。
当我查看断点时,newNavCon
上的模式呈现样式在 presentViewController
之后立即更改为 UIModalPresentationFullScreen
。
真正让我感到困惑的是这种行为仅发生在iOS7。它在 iOS 8-10 上完全按照预期工作。
为什么会这样?在 iOS7 上有什么我不知道的特殊怪癖吗?为什么演示文稿样式会像这样被覆盖?
编辑: 澄清一下,这是我正在使用的视图层次结构:
UIViewController
(作为容器,全屏)UITabBarController
(非全屏,由容器控制)definesPresentationContext
UINavigationController
(作为选项卡根,呈现模态window)definesPresentationContext
UINavigationController
(由上面UIViewController
模态呈现)modalPresentationStyle
=UIModalPresentationCurrentContext
UIViewController
我猜您是在 iPhone 设备或模拟器上进行测试。在 iOS 7 及之前,UIModalPresentationCurrentContext
是一个 iPad-only 特征。