如何在Swift中以编程方式更新约束的常量属性?

38

我想要对一个对象进行动画处理,所以我声明了一个约束(constraint)并将其添加到视图中。然后我在一个UIView动画中更新约束的constant属性。为什么这段代码不能移动这个对象?

UIView.animateWithDuration(1, animations: {
     myConstraint.constant = 0   
     self.view.updateConstraints(myConstraint)
})
1个回答

91
为了声明一个动画,你不能重新定义约束并调用 updateConstraints。你应该更改约束的constant,并按照以下格式进行操作:

为了声明动画,不能重新定义约束并调用updateConstraints方法。而是需要更改约束的constant值,并按照以下格式进行操作:

self.view.layoutIfNeeded()
UIView.animate(withDuration: 1) {
    self.sampleConstraint.constant = 20
    self.view.layoutIfNeeded()
}

3
"self.view.layoutIfNeeded()"正是我所需要的!非常感谢。只有一个疑问..它是否会带来一些性能问题?" - Mudit Jaju
3
如果不是在UITableView中,通常不会有性能问题。 - duan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接