Хорошо. У меня была эта проблема, когда я впервые начал на iOS с Swift. Видите, проблема в вашем понимании якорей.
Указанная вами константа не работает так, как вы ожидаете. (Вы ожидаете, что он будет функционировать как некий слушатель, который будет продолжать обновляться в зависимости от обновления значения переменной. Это не так). Он просто примет значение переменной во время установки и затем не будет выглядеть назад, если вы не получите доступ к этому якору и измените константу вручную.
Именно поэтому вы должны сохранить экземпляр якоря и вручную изменить константу следующим образом.
Определить переменную ограничения:
var topAnchorConstraint: NSLayoutConstraint!
Сохранить соответствующее ограничение в переменной
topAnchorConstraint = passwordTextField.topAnchor.constraint(equalTo: emailTextField.bottomAnchor, constant: 35)
topAnchorConstraint.isActive = true
Теперь вам нужно изменить константу по мере необходимости.
func textFieldDidBeginEditing(_ textField: UITextField) {
UIView.animate(withDuration: 1.0, animations: {
self.topAnchorConstraint.constant = 15
self.view.layoutIfNeeded()
}, completion: nil)
}