2

有很多答案的互補問題,就是如何防止過渡到PrimaryOverLay在從RegularCompact接口的改變,如使用UISplitViewController:如何從緊湊型旋轉到正常時,爲防止擴張

func splitViewController(splitViewController: UISplitViewController, collapseSecondaryViewController secondaryViewController: UIViewController, ontoPrimaryViewController primaryViewController: UIViewController) -> Bool 

在我的情況下,我有一個iPhone 6+,縱向顯示詳細視圖。當我將設備旋轉至水平(CompactRegular)時,我希望主視圖保持隱藏狀態。我試過在很多地方設置preferredDisplayMode.PrimaryHidden,但它沒有明顯的影響。谷歌搜索沒有任何結果。

回答

4

那麼,在我寫了這個問題之後,但在發佈之前,我跳過了一個possible solution,這是爲了覆蓋分割視圖控制器引用的特徵集合。

我採取了這個想法,並決定將子類UISplitViewController,並覆蓋traitCollection屬性。該訣竅:

final class MySplitViewController: UISplitViewController { 
    var didOnce = false 
    override var traitCollection: UITraitCollection { 
    let old = super.traitCollection 
    let change = UITraitCollection(horizontalSizeClass: .Compact) 
    let new = UITraitCollection(traitsFromCollections: [old, change]) 
    return new 
    } 

顯然,這是硬編碼爲一個設備 - 後來我去添加一些功能,我可以用它來控制實際上是在返回什麼。