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

Enl*_*lil 3 iphone ipad uisplitviewcontroller ios swift

在通用应用程序中,我无法找到始终显示(并且仅)主控制器的方法,即使在横向旋转的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
    }
Run Code Online (Sandbox Code Playgroud)

小智 6

您需要覆盖UISplitViewController的特征集合,以便始终具有紧凑的大小类.为此,您需要插入容器视图控制器作为UISplitViewController的父级:

  1. 将UISplitViewController嵌入到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)
        }
    }}
    
    Run Code Online (Sandbox Code Playgroud)

使用UIKit构建自适应应用程序的重要解释(WWDC 2014)