Изменения в constraints необходимо внести до вызова layoutIfNeeded() или перед завершением цикла обновлений, в котором система автоматически вызовет layout. Наиболее распространенный способ — внутри метода updateConstraints() пользовательского UIView или UIViewController.updateViewConstraints().
Пример изменения констрейнтов в updateConstraints():
swift
Изменения также можно внести непосредственно перед вызовом layoutIfNeeded(), например, в ответ на действие пользователя или изменение состояния:
swift
Главное, чтобы изменения constraints завершились до того, как Auto Layout начнет рассчитывать новые фреймы.