Чтобы сделать это программно, вы переопределяете метод traitCollectionDidChange:
в вашем контроллере представления.
Затем вы можете посмотреть self.traitCollection.horizontalSizeClass
и self.traitCollection.verticalSizeClass
, чтобы решить, что делать. Используйте созданную вами ссылку на ограничение макета, чтобы установить соответствующую константу.
После того, как все ограничения макета установлены, вызовите updateConstraints в своем представлении, чтобы запустить передачу макета.
Например:
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
let hCompact = (self.traitCollection.horizontalSizeClass == .compact)
let vRegular = (self.traitCollection.verticalSizeClass == .regular)
if hCompact && vRegular {
self.betweenTextTerms.constant = 45
}
self.updateViewConstraints()
}
Для простых случаев это гораздо удобнее сделать в раскадровке!