【问题标题】: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 设置的信息。

标签: swift constraints snapkit


【解决方案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
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-21
  • 1970-01-01
相关资源
最近更新 更多