使用 Interface Builder 探索 ModalPresentationStyle

这将是一个非常基本的应用程序,它将说明 iOS 中的不同 ModalpresentationStyle。根据此处的文档,UIModalPresentationStyle 有 9 个不同的值,如下所示,

  1. fullScreen
  2. pageSheet
  3. formSheet
  4. currentContext
  5. custom
  6. overFullScreen
  7. overCurrentContext
  8. popover
  9. none

要设置项目,只需创建一个普通的 iOS 项目并添加 2 ViewControllers。把 UIButton 放在你最初的 ViewController 中,并通过 Target -> Action 机制连接到第 2 ViewController。为了区分 ViewControllers,在 ViewController 中设置 UIView 的背景属性为其他颜色。如果一切顺利,你的 Interface Builder 应该看起来像这样, StackOverflow 文档

确保你构建此项目并在 iPad 上运行 (有关 iPad 原因的详细信息,请参阅备注部分)。完成项目设置后,选择 segue 并转到 attributes inspector。你应该能看到这样的东西, StackOverflow 文档

将 kind 属性设置为 Present Modally

现在,我们不会在这个例子中看到所有的效果,因为它们中的一些需要一些代码。

让我们从 fullscreen 开始吧。在 Kind 选项卡中选择 Present Modally 时,默认选择此效果。当你构建并运行时,第二个 ViewController 会占据你 iPad 的全屏。

StackOverflow 文档

接下来是 pageSheet。你可以从 Presentation 选项卡中选择此选项。在此选项中,当设备处于纵向模式时,第二个 ViewController 类似于全屏,但在横向模式下,第二个 ViewController 的设备宽度要窄得多。此外,第二 ViewController 未涵盖的任何内容都将变暗。

StackOverflow 文档

对于 formSheet 型,第二个 ViewController 放置在设备的中心,尺寸小于设备的尺寸。此外,当设备处于横向模式且键盘处于可见位置时,向上调整视图以显示 ViewController

StackOverflow 文档

我们要尝试的最后一种风格是 popover。要选择此样式,请在 Kind 选项卡中选择 Present as Popover。第二个 ViewController 呈现为一个小的 popover(大小可以设置)。背景内容变暗。弹出窗口外的任何水龙头都会解开弹出窗口。你的 Attributes Inspector 应该是这样的,

StackOverflow 文档

Anchor 是你希望弹出箭头指向的 UI 元素。Directions 是你允许 popover Anchor 指向的方向。

StackOverflow 文档

还有更多这些基本的模态表示样式,但它们实现起来并不复杂,需要一些代码。可以在 Apple 文档中找到更多详细信息。