以编程方式在 UISplitViewController 中显示滑过主视图

Programatically show the slide over master view in a UISplitViewController

当在 iPad 上以纵向模式使用 UISplitViewController 时,我得到了我的详细视图控制器的全屏视图,这是预期的。我可以从左侧滑动并显示主视图幻灯片,如何以编程方式触发此幻灯片?

似乎没有简单的方法可以做到这一点,但我发现使用以下代码具有预期的行为:

UIView.animate(withDuration: 0.2, animations: {
  self.splitViewController?.preferredDisplayMode = .primaryOverlay
})

确保在横向旋转时将显示模式设置回 automatic,以便它始终像默认情况一样显示大纲和细节:

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
  super.viewWillTransition(to: size, with: coordinator)

  coordinator.animate(alongsideTransition: { _ in
    if UIDevice.current.orientation == .landscapeLeft || UIDevice.current.orientation == .landscapeRight {
      self.splitViewController?.preferredDisplayMode = .automatic
    }
  }, completion: nil)
}