强制UISplitViewController始终在横向(iPhone 6 Plus上)显示主(仅)

在通用应用程序中,我无法find始终显示(也是唯一)主控制器的方法,即使在横向旋转的iPhone 6 Plus上也是如此。

我想要实现的只是看到UISplitViewController只能在iPad上运行,而不能在iPhone上运行,不知道是否有可能

委托方法没有帮助:

func splitViewController(svc: UISplitViewController, shouldHideViewController vc: UIViewController, inOrientation orientation: UIInterfaceOrientation) -> Bool { return false } func splitViewController(splitViewController: UISplitViewController, collapseSecondaryViewController secondaryViewController: UIViewController, ontoPrimaryViewController primaryViewController: UIViewController) -> Bool { return true } 

你需要覆盖你的UISplitViewController的特征集合,以便总是有一个紧凑的尺寸类。 要做到这一点,你需要插入一个容器视图控制器作为你的UISplitViewController的父级:

  1. 将您的UISplitViewControllerembedded到ContainerViewController中
  2. 将下面的代码添加到您的容器视图控制器子类中,以覆盖您的子视图控制器的特征集合:

     class ContainerVC: UIViewController { override func viewDidLoad() { super.viewDidLoad() } override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) { performOverrideTraitCollection() } private func performOverrideTraitCollection() { for childVC in self.childViewControllers { setOverrideTraitCollection(UITraitCollection(horizontalSizeClass: .Compact), forChildViewController: childVC) } }} 

使用UIKit构build适应性应用程序的很好的解释(WWDC 2014)