Я установил несколько наборов ограничений в IB, и я хотел бы программно переключаться между ними в зависимости от некоторого состояния. Там есть сборка constraintsA
, все из которых отмечены как установленные от IB, и коллекцию розетки constraintsB
, все из которых удалены в IB.
Я могу программно переключаться между двумя наборами так:
NSLayoutConstraint.deactivateConstraints(constraintsA)
NSLayoutConstraint.activateConstraints(constraintsB)
Но... Я не могу понять, когда это сделать. Похоже, я должен был сделать это один раз в viewDidLoad
, но я не могу заставить это работать. Я попытался позвонить view.updateConstraints()
и view.layoutSubviews()
после установки ограничений, но безрезультатно.
Я обнаружил, что если я установлю ограничения в viewDidLayoutSubviews
, все будет работать так, как ожидалось. Наверное, мне хотелось бы узнать две вещи...
- Почему я получаю такое поведение?
- Можно ли активировать/деактивировать ограничения из viewDidLoad?