Как управлять ограничениями подвижных видов в iOS?
У меня есть набор кнопок, которые я анимирую в режиме "развернуть-свернуть", больше похоже на действие открытия и закрытия ящика. Я просто изменяю положение X этих кнопок для достижения этой цели, и она отлично работает. При разработке этого макета в конструкторе интерфейсов я установил ограничения для всех этих кнопок в их "закрытом ящике".
Проблема возникает, когда ящик остается открытым, а некоторые другие виды на экране обновляются. Я это понимаю viewDidLayoutSubviews()
вызывается в этом случае. Из-за этого меню ящика, которое оставлено открытым, неожиданно закрывается, что мешает анимации "закрыть ящик", и кнопки не получают ожидаемый вид, как в их состоянии "ящик закрыт".
Я предполагаю, что ограничения кнопок будут повторно инициализированы, когда viewDidLayoutSubviews()
получил вызов.
Теперь перейдем к моему вопросу - как нам установить / управлять ограничениями для представлений, которые будут перемещаться во время выполнения из-за анимации?
Я новичок в разработке приложений для iOS, и я прошел через вопросы, задаваемые по программному управлению ограничениями или viewDidLayoutSubviews
и т.д., но я не мог найти стандартный способ следовать в ситуации, с которой столкнулся.
1 ответ
Вместо изменения кадра вы можете анимировать изменение ограничений.
Краткий обзор того, как это сделать:
yourConstraint.constant = newValue
UIView.animate(withDuration: animationDuration) {
yourView.layoutIfNeeded()
}
Более подробную информацию об этом можно найти здесь.