为什么这些约束在动画时似乎滞后?
Why do these constraints seem to lag when animated?
我正在使用 UIView.animate
为我的约束设置动画。 drawerHeight
是约束变量。
代码如下:
drawerHeight?.constant = newHeight
UIView.animate(withDuration: 0.35, delay: 0, usingSpringWithDamping: 0.65, initialSpringVelocity: 2, options: .allowUserInteraction, animations: {
self.superview?.layoutIfNeeded()
})
Here is a video of what the issue looks like.
看视频底部,底部边缘似乎滞后了。 为什么这些约束在动画时似乎滞后?
这是一个自我回答的问题。这个post是为了帮助以后的人发现自己做错了什么,以及如何快速改正。
问题是约束附加到比以前更深的层次结构中的视图。使用 layoutIfNeeded()
时,应在包含约束的视图的父视图上调用它。
在我的情况下,我将具有 drawerHeight
约束的视图放在另一个 UIView
中,这使其在层次结构中更深。
我通过
解决了这个问题
self.superview?.superview?.layoutIfNeeded()
,
而不是
self.superview?.layoutIfNeeded()
.
我正在使用 UIView.animate
为我的约束设置动画。 drawerHeight
是约束变量。
代码如下:
drawerHeight?.constant = newHeight
UIView.animate(withDuration: 0.35, delay: 0, usingSpringWithDamping: 0.65, initialSpringVelocity: 2, options: .allowUserInteraction, animations: {
self.superview?.layoutIfNeeded()
})
Here is a video of what the issue looks like.
看视频底部,底部边缘似乎滞后了。 为什么这些约束在动画时似乎滞后?
这是一个自我回答的问题。这个post是为了帮助以后的人发现自己做错了什么,以及如何快速改正。
问题是约束附加到比以前更深的层次结构中的视图。使用 layoutIfNeeded()
时,应在包含约束的视图的父视图上调用它。
在我的情况下,我将具有 drawerHeight
约束的视图放在另一个 UIView
中,这使其在层次结构中更深。
我通过
解决了这个问题self.superview?.superview?.layoutIfNeeded()
,
而不是
self.superview?.layoutIfNeeded()
.