为啥这些约束在动画时似乎滞后?
Posted
技术标签:
【中文标题】为啥这些约束在动画时似乎滞后?【英文标题】:Why do these constraints seem to lag when animated?为什么这些约束在动画时似乎滞后? 【发布时间】:2019-05-30 14:42:54 【问题描述】:我正在使用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.
查看视频的底部,底部边缘似乎滞后。 为什么这些约束在动画时似乎滞后?
这是一个自我回答的问题。这篇文章是为了帮助未来的人们发现他们做错了什么,以及如何快速修复它。
【问题讨论】:
【参考方案1】:问题是约束被附加到比以前更深层次结构的视图上。使用layoutIfNeeded()
时,应在包含约束的视图的父视图上调用。
在我的情况下,我将带有 drawerHeight
约束的视图放在另一个 UIView
中,这使它在层次结构中更深。
我解决了这个问题
self.superview?.superview?.layoutIfNeeded()
,
而不是
self.superview?.layoutIfNeeded()
.
【讨论】:
以上是关于为啥这些约束在动画时似乎滞后?的主要内容,如果未能解决你的问题,请参考以下文章