呈现视图控制器
Last updated
Was this helpful?
Last updated
Was this helpful?
有两种方法可以在屏幕上显示视图控制器:将其嵌入到容器视图控制器中或显示出来。容器视图控制器提供了应用的主要导航功能,但呈现视图控制器也是重要的导航工具。您可以使用直接显示在当前控件之上显示一个新的视图控制器。通常,在您想要实现模式接口时会显示视图控制器,但也可以将它们用于其他目的。
对呈现视图控制器的支持内置于UIViewController类中,并且可用于所有视图控制器对象。您可以从任何其他视图控制器中呈现任何视图控制器,尽管UIKit可能会将请求重新路由到其他视图控制器。呈现视图控制器会在原始视图控制器(称为呈现视图控制器)和要显示的新视图控制器(称为呈现视图控制器)之间建立关系。此关系形成视图控制器层次结构的一部分,并保持不变,直到关闭所显示的视图控制器为止。
呈现视图控制器是一种将新内容动画化到屏幕上的快速简便的方法。 UIKit内置的显示机制使您可以使用内置或自定义动画显示新的视图控制器。内置的显示和动画几乎不需要代码,因为UIKit可以处理所有工作。您还可以轻松创建自定义的显示和动画,并将其与任何视图控制器一起使用。
您可以以编程方式或使用segues启动视图控制器的显示。如果您在设计时就知道了应用的导航方式,则segues是启动显示的最简单方法。对于更多动态界面,或者在没有专用控件启动segue的情况下,请使用UIViewController的方法来呈现您的视图控制器。
视图控制器的表示样式控制着它在屏幕上的外观。 UIKit定义了许多标准的表示样式,每种样式都有特定的外观和意图。在设计应用程序时,请选择最适合您要尝试的呈现方式,并将适当的常量分配给要呈现的视图控制器的modalPresentationStyle属性。
全屏显示样式涵盖了整个屏幕,从而防止了与基础内容的交互。在水平规则的环境中,只有一种全屏样式可以完全覆盖基础内容。其余部分合并了变暗视图或透明性,以允许基础视图控制器的某些部分显示出来。在水平紧凑的环境中,全屏显示文稿会自动适应UIModalPresentationFullScreen样式,并覆盖所有基础内容。
下图说明了在水平规则环境中使用UIModalPresentationFullScreen,UIModalPresentationPageSheet和UIModalPresentationFormSheet样式的显示文稿的外观。在图中,左上角的绿色视图控制器在右上角显示蓝色视图控制器,每种显示样式的结果如下所示。对于某些表示样式,UIKit在两个视图控制器的内容之间插入一个变暗视图。
当使用UIModalPresentationFullScreen样式显示视图控制器时,UIKit通常会在过渡动画完成后删除基础视图控制器的视图。您可以通过指定UIModalPresentationOverFullScreen样式来防止删除这些视图。当显示的视图控制器具有透明区域以使基础内容显示出来时,可以使用该样式。
使用全屏显示样式之一时,启动显示的视图控制器本身必须覆盖整个屏幕。如果呈现的视图控制器未覆盖屏幕,则UIKit会沿视图控制器层次结构前进,直到找到一个可以的视图控制器层次结构。如果找不到能填满整个屏幕的中间视图控制器,则UIKit将使用窗口的根视图控制器。