Как установить разные рамки для одинакового вида в альбомном и портретном режимах iPad на раскадровке? - PullRequest
0 голосов
/ 28 июня 2018

Для iPad ограничения черт одинаковы для альбомного и портретного режима. То есть обычная ширина и обычная высота для обоих?

Как установить отдельные ограничения для обоих режимов, мне нужен макет, как показано на скриншоте ниже:

enter image description here

Пейзажный режим:

enter image description here

1 Ответ

0 голосов
/ 29 июня 2018

Вы не можете справиться с этой ситуацией только в конструкторе интерфейсов. Я рекомендую вам использовать UIStackView и менять его ось при изменении ориентации в коде.

Может быть, вы также хотите установить и активировать / деактивировать некоторые ограничения ширины и высоты для вашего красного вида, чтобы сохранить его правильный размер в зависимости от текущей ориентации.

Решение может выглядеть так:

@IBOutlet weak var outerStackView: UIStackView!

@IBOutlet weak var redViewWidthConstraint: NSLayoutConstraint!
@IBOutlet weak var redViewHeightConstraint: NSLayoutConstraint!

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
    let willTransitionToLandscape = (size.width > size.height)

    if willTransitionToLandscape {
        redViewHeightConstraint.isActive = false
        redViewWidthConstraint.isActive = true
    } else {
        redViewWidthConstraint.isActive = false
        redViewHeightConstraint.isActive = true
    }

    coordinator.animate(alongsideTransition: { _ in
        self.outerStackView.axis = willTransitionToLandscape ? .horizontal : .vertical
        self.view.layoutIfNeeded()
    })
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...