使用定位创建
NSLayoutContraint
s.创建新的时,需要停用以前的。
将此属性添加到
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()
论
imageView
(阿卡
self.view
)因为两者之间的约束
button
和
图像浏览
将添加到他们的共同祖先(
自视图
)