模型
UISplitViewController
拥有两个视图控制器,在故事版中分别对应主视图控制器和细节视图控制器,在编码中对应为viewControllers
属性,主视图控制器在前,细节视图控制器在后。- 开发者通过
preferredDisplayMode
推荐想要的模式,通过displayMode
获得当前的模式。 - 在iPhone中,横屏、和竖屏都是
allVisible
,此时可以通过UISplitViewControllerDelegate
的splitViewController(_:collapseSecondary:onto:)
方法来告诉系统默认是显示哪个视图控制器。 - 在iPad中,横屏是
allVisible
,竖屏是primaryHidden
。此时如果想要默认显示主视图控制器,需要在UISplitViewControllerDelegate
的splitViewController(_:willChangeTo:)
方法,设定preferredDisplayMode
为primaryOverlay
。
UISplitViewController
- displayMode
- 这是一个只读属性。
- 它代表的是
UISplitViewController
当前的具体模式。
- preferredDisplayMode
- 开发者只能通过
displayMode
了解到UISplitViewController
当前的模式。如果开发者不满意这个模式,想要手动调节,就可以通过修改preferredDisplayMode
来实现。 - 值得注意的是,这个是开发者的推荐,并不是完全的设定,系统仅会在条件允许的情况下,优先使用这个推荐。如果系统认为可视面积过小,就会忽略这个推荐,而使用系统认为最适合的模式。
- 开发者只能通过
UISplitViewController.DisplayMode(按照rawValue的数值排列)
- automatic
- 自动模式是默认的模式,完全由系统进行判断,开发者没有任何推荐。
- 注意:这个自动模式,只在
preferredDisplayMode
中有效,displayMode
实际显示的,只会是下面三个模式。
- primaryHidden
UISplitViewController
包含两个视图控制器,主视图控制器和细节视图控制器。primaryHidden
表示优先显示细节视图控制器,而将主视图控制器隐藏起来。用户需要使用手势或者是后退按钮显示主视图控制器。- iPad在竖屏时默认会是这个模式。
- allVisible
- 同时显示主视图控制器和细节视图控制器。
- 需要注意:这个模式虽然叫
allVisible
,却不是一定都能同时显示。如果不能,就会需要告诉系统,优先显示哪个视图控制器。 - iPad在横屏时默认会是这个模式。此时会全部显示。
- iPhone 6s Plus在竖屏和横屏时都是这个模式。竖屏时,因为实际上不能全部显示,就还需要考虑
UISplitViewControllerDelegate
的splitViewController(_:collapseSecondary:onto:)
方法。
- primaryOverlay
- 与
primaryHidden
类似。但是会优先显示主视图控制器,叠加在细节视图控制器之上。 - 如果我们要特别提示用户主视图控制器的存在,就可以使用这个选项。
- 与
UISplitViewControllerDelegate
splitViewController(_:collapseSecondary:onto:)
方法
当UISplitViewController.DisplayMode
为allVisible
,且可显示的面积不能同时容纳显示主视图控制器和细节视图控制器时,系统会调用UISplitViewControllerDelegate
的splitViewController(_:collapseSecondary:onto:)
方法。
这个方法返回true
代表显示主视图控制器,返回false
代表显示细节视图控制器。
splitViewController(_:willChangeTo:)
方法
当你需要在系统选择了primaryHidden
时,就更改为primaryOverlay
。使用此方法。