强制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的父级:
- 将您的UISplitViewControllerembedded到ContainerViewController中
-
将下面的代码添加到您的容器视图控制器子类中,以覆盖您的子视图控制器的特征集合:
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)