动画约束,如何在所需方向增加高度
Posted
技术标签:
【中文标题】动画约束,如何在所需方向增加高度【英文标题】:Animate constraints, how to grow height in desired direction 【发布时间】:2019-02-19 09:06:26 【问题描述】:我使用 SnapKit 根据触摸事件改变 UIView 的高度。因此,当用户触摸单元格时,它会展开。这样可以正常工作:
@objc func didRecieveTouch()
let originalHeight: CGFloat = 90
let expandedHeight: CGFloat = 244
if !expanded
self.snp.updateConstraints make in
make.height.equalTo(expandedHeight)
else
self.snp.updateConstraints make in
make.height.equalTo(originalHeight)
self.expanded = !self.expanded
UIView.animate(withDuration: 0.25, animations:
self.superview?.layoutIfNeeded()
)
问题是视图的增长方向对我来说看起来很奇怪和错误。视图实际上“跳”到新分配的空间并向上增长而不是向下增长,这是我想要的行为。
【问题讨论】:
能否请您添加您调用 didRecieveTouch 的代码的哪一部分。并添加一些有关 tableview 设置的信息。 【参考方案1】:在动画块中添加您的代码。
UIView.animate(withDuration: 0.25)
if !expanded
self.snp.updateConstraints make in
make.height.equalTo(expandedHeight)
else
self.snp.updateConstraints make in
make.height.equalTo(originalHeight)
self.expanded = !self.expanded
self.superview?.layoutIfNeeded()
【讨论】:
没有。我不知道 snap kit 是什么,但通常情况下,您会在动画块中更新约束和布局。由于他们制作了一个库来设置约束,我最好的猜测是你甚至不需要手动布局。他们应该在图书馆里这样做。 @desdenova 如果您不确定 SnapKit 问题是如何工作的,您为什么要回答它? github.com/SnapKit/SnapKit/issues/199以上是关于动画约束,如何在所需方向增加高度的主要内容,如果未能解决你的问题,请参考以下文章
如何在不制作 IBOutlet 的情况下以编程方式在 Swift 中为 UIView 高度约束设置动画?