Использование якорей создает NSLayoutContraint
с. Вам нужно деактивировать предыдущие при создании новых.
Добавьте эту собственность к вашему MenuViewController
:
var imageLeftConstraint: NSLayoutConstraint?
Установите его при первом создании ограничения:
imageLeftConstraint = self.imageView.leftAnchor.constraint(equalTo: button.leftAnchor, constant: 0)
imageLeftConstraint?.isActive = true
Затем используйте его, чтобы деактивировать предыдущее ограничение перед добавлением нового:
@objc func didSelectedButton(_ button:UIButton) {
imageLeftConstraint?.isActive = false
imageLeftConstraint = self.imageView.leftAnchor.constraint(equalTo: button.leftAnchor)
imageLeftConstraint?.isActive = true
UIView.animate(withDuration: 1, animations: {
self.view.layoutIfNeeded()
}, completion: nil)
}
Примечание: Вам нужно вызвать layoutIfNeeded()
для superView imageView
(он же self.view
), потому что ограничение между button
и imageView
будет добавлено к их общему предку ( * * тысяча двадцать-одина). * * тысяча двадцать две