在我的代码中,我使用 present(:animated:completion:) 方法从 ViewController1 呈现 ViewController2,ViewController1 是嵌套在 RootViewController 中的容器视图的根视图控制器。
我已将演示样式设置为 .coverVertical,并且在其 viewDidLoad() 方法中将 ViewController1 的 definePresentationContext 变量设置为 true。我还将 ViewController2 的演示文稿设置为 .overCurrentContext。这使得 ViewController2 的边界与 ViewController1 的边界相同,但无论出于何种原因,.coverVertical 动画都从屏幕底部开始,而不是从 ViewController1 框架的底部开始。
但是,当我将容器视图的根视图控制器设置为 UINavigationController 并将 ViewController1 嵌套在其中时,这种情况就会消失。我认为这意味着我缺少一些第二个上下文变量,它可以防止动画在其他视图之上进行动画处理,但除了definePresentationContext 之外,我似乎找不到任何其他变量。