动画 NSLayoutConstraint 乘数 and/or 为 Active 状态

Animate NSLayoutConstraints multiplier and/or isActive state

我想为自定义视图设置约束变化动画。

我试过类似的方法:

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 对主视图(代码中的self.view)有宽度限制,如下所示

  view1Width = view * 0.7 + constant 

与其创建 2 个约束并通过更改 Active 属性 ORRR [通过停用旧乘数的当前约束并使用新乘数创建新的] 来创建 2 个约束并在它们之间切换,还不如保留 1 个约束并保持不变

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

我可以这样做

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

与减法相同

有了这个想法,您就不必纠结于如何激活活动 on/off,但您仍然会使用

  self.view.layoutIfNeeded()