2016-02-29 107 views
2

在通用应用程序中,我无法找到始终显示主控制器的方法(即使在iPhone 6 Plus中进行横向旋转) 。强制UISplitViewController始终仅在横向上显示主(仅在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 
    } 

回答

5

您需要重写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) 
        } 
    }} 
    

很好的解释在Building Adaptive Apps with UIKit (WWDC 2014)

+0

大把戏!谢谢 – Enlil

相关问题