动画NSLayoutConstraints乘数和/或isActive状态

时间:2018-01-25 22:21:54

标签: ios swift nslayoutconstraint

我想为自定义视图更改约束的动画。

我尝试过类似的方法:

if widthConstraint.isActive {
     widthConstraint.isActive = false
     widthConstraintA.isActive = true
} else {
     widthConstraintA.isActive = false
     widthConstraint.isActive = true
}
     UIView.animate(withDuration: 1) { 
        imageView.layoutIfNeeded()
}

乘数相同(重新创建像Can i change multiplier property for NSLayoutConstraint?这样的新约束)。但所有州立即改变。

是否有任何方法可以帮助在两种状态之间创建平滑的插值动画?

1 个答案:

答案 0 :(得分:2)

是的,假设storyboard中的view1对主视图有宽度约束(代码中的self.view),就像这样

  view1Width = view * 0.7 + constant 

而不是通过更改Active属性ORRR来创建2个约束并在它们之间切换[通过使用旧乘数停用当前约束并使用新乘数创建新约束]将其保留1个约束并使用它的常量

假设我想将view1乘数改为0.9而不是0.7

我可以这样做

  self.view1Width.constant += self.view.frame.size.width * 0.2

与减法相同

有了这个想法,你不需要陷入如何为活动开/关动画,但你仍然使用

  self.view.layoutIfNeeded()