为什么在制作动画时这些约束似乎滞后?

时间:2019-05-30 14:42:55

标签: ios swift autolayout nslayoutconstraint uiviewanimation

我正在使用another-property为约束设置动画。 UIView.animate是约束变量。

代码如下:

drawerHeight

Here is a video of what the issue looks like.

从视频底部看,底部边缘似乎落后。 为什么动画时这些约束似乎滞后?

这是一个自我解答的问题。这篇文章是为了帮助人们将来发现自己做错了什么以及如何快速修复它。

1 个答案:

答案 0 :(得分:0)

问题在于该约束附加到比以前更深的层次结构中的视图。使用drawerHeight?.constant = newHeight UIView.animate(withDuration: 0.35, delay: 0, usingSpringWithDamping: 0.65, initialSpringVelocity: 2, options: .allowUserInteraction, animations: { self.superview?.layoutIfNeeded() }) 时,应在包含约束的视图的超级视图上调用它。

在我的情况下,我将具有layoutIfNeeded()约束的视图放在另一个drawerHeight中,这使它在层次结构中更深。

我通过解决此问题

UIView

代替

self.superview?.superview?.layoutIfNeeded()