动画 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()
我想为自定义视图设置约束变化动画。
我试过类似的方法:
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()