UISplitViewController

简介

该类是一个容器视图控制器,它显示了一个主从复合结构的界面。在一个主从复合结构界面中,主视图控制器的变化驱动二级视图控制器的变化。主从视图控制是并排显示的。

当构建应用程序的用户界面时,分割视图控制器通常是你应用程序窗口的根视图控制器,它没有显著的外观,大部分的外观由子视图控制器定义。你可以使用界面构建器或给viewControllers属性分配值来配置子视图控制器。

在横向紧凑的环境中,分割视图控制器的行为更像一个导航控制器,初始显示主视图控制器并按需推入或弹出二级视图控制器。你也可以通过给preferredDisplayMode属性分配一个值来要求分割控制器按指定安排来显示。

当在屏幕上显示时,分割视图控制器通过其代理对象来管理子视图控制器的显示,代理对象是一个采用UISplitViewControllerDelegate协议的对象,当发生改变时,可以通过协议方法来自定义分割控制器的行为。

配置分割视图控制器的外观

一个分割视图控制器的外观由其显示模式控制,你不能直接设置它的外观,只能间接通过preferredDisplayMode属性来设置。分割视图控制器力求尊重你所指定的显示模式,但由于空间的限制,可能无法适应所指定模式的视觉,例如:在一个紧凑的环境中,分割视图控制器无法并排显示它的子视图控制器。

可用的显示模式如下:

  • Side-by-side
    • 此模式下,主从视图控制器同时显示在屏幕上,主控制器显示在左边,二级控制器显示在右边,左边通常比右边窄。
    • 可以通过preferredPrimaryColumnWidth属性来调整主视图控制器的宽度。
    • collapsed属性值为YES时,不会应用此模式值,因为此时只会显示一个视图控制器。
    • 此模式对应的模式值为UISplitViewControllerDisplayModeSideBySide
  • Hidden
    • 此模式下,只会显示二级视图控制器。
    • 此模式下,如果想显示主试图控制器,只能以模态显示或改变显示模式。
    • 此模式对应的模式值为UISplitViewControllerDisplayModePrimaryHidden
  • Overlay
    • 此模式下,二级视图控制器显示在屏幕上,主视图控制器则层叠在它上面。
    • 此模式下,主视图控制器部分掩盖了二级视图控制器。
    • 此模式对应的模式值为UISplitViewControllerDisplayModeOverlay

状态保持

从iOS 6开始,如果你给分割视图控制器的restorationIdentifier属性分配一个值,它将保留所有拥有有效恢复标识符的子视图控制器。在下一个启动周期,分割视图控制器会将保留的视图控制器恢复到之前的状态。分割视图控制器的子视图控制器可以使用相同的恢复标识符,主视图控制器会自动存储更多的信息,以确保每个子视图控制器的恢复路径是独一无二的。

注意

  • 从iOS 8开始,该类可以用于iOS设备,在此之前,只能用于iPad设备。
  • 分割视图控制器内置了一个手势识别器,使得用户可以通过滑动手势来改变显示模式,你可以通过将presentsWithGesture属性设置为NO来抑制这一特性。
  • 所有发送给子视图控制器的消息一定会流经分割视图控制器。