什么是definitionsPresentationContext和providePresentationContextTransitionStyle

Nic*_*kYu 32 ios

ViewControllerdefinesPresentationContextprovidesPresentationContextTransitionStyle,但没有它们是如何工作的想法.我看过WWDC2011,但我仍然对这两件事感到困惑.

任何人都可以解释一下,最好用简单的演示吗?

Jak*_*her 46

这两个属性都用于视图控制器包含,并为子视图控制器提供覆盖窗口根视图控制器的表示上下文或表示样式的选项.作为参考,这里是相关的WWDC演示文稿,它提供了两者的解释:

https://developer.apple.com/videos/play/wwdc2011-102/

  • definesPresentationContext 用于决定哪个视图控制器将确定所呈现的视图控制器视图的大小:

当呈现视图控制器时,iOS将从呈现视图控制器开始,并询问它是否要提供演示文稿上下文.如果呈现视图控制器未提供上下文,则iOS会询问呈现视图控制器的父视图控制器.iOS通过视图控制器层次结构向上搜索,直到视图控制器提供演示文稿上下文.如果没有视图控制器提供上下文,则窗口的根视图控制器提供表示上下文.

如果视图控制器返回YES,则它提供演示文稿上下文.视图控制器视图覆盖的窗口部分确定了呈现的视图控制器视图的大小.此属性的默认值为NO.

  • providesPresentationContextTransitionStyle 用于决定在呈现子视图控制器时应使用哪种模式表示样式:

当视图控制器的definePresentationContext属性为YES时,它可以用自己的视图控制器替换所呈现的视图控制器的过渡样式.当此属性的值为YES时,将使用当前视图控制器的过渡样式而不是与呈现的视图控制器关联的样式.当此属性的值为NO时,UIKit使用呈现的视图控制器的过渡样式.此属性的默认值为NO.

对于复杂的子视图控制器(如UISearchController),将这些设置为true是个好主意,默认值为false.