Как установить вариации константы NSLayoutConstraint в коде? - PullRequest
0 голосов
/ 07 ноября 2018

Я перетащил ограничение в свой код и могу получить к нему доступ.

@IBOutlet weak var betweenTextTerms: NSLayoutConstraint!

Как бы то ни было, все, что я могу сделать, это установить константу. Но как мне установить значение для вариантов, таких как Compact Regular, в коде?

enter image description here

1 Ответ

0 голосов
/ 07 ноября 2018

Чтобы сделать это программно, вы переопределяете метод 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()
}

Для простых случаев это гораздо удобнее сделать в раскадровке!

...