2

Есть много ответов на комплементарный вопрос, который, как предотвратить переход к PrimaryOverLay на от Regular до Compact изменения интерфейса, например, использоватьUISplitViewController: Как предотвратить расширение при повороте от договора до Regular

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

В моем случае у меня есть iPhone 6+ с подробным представлением в портрете. Когда я поворачиваю устройство на горизонтальное (Compact до Regular), я хочу, чтобы основной вид оставался скрытым. Я попытался установить 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 
    } 

Очевидно, это жёстко для одного устройства - позже я пойду и добавить некоторые функции, которые я могу использовать, чтобы контролировать то, что на самом деле вернулся.

Смежные вопросы