当其内在内容大小更改时,是否可以对已安排的 subview 进行动画处理?

例如,假设我有一个安排好的 subview ,该 subview 包含固定到边缘的单个UILabel。该标签包含少量文本。出现新的文本,它比以前的文本大。标签的固有内容大小现在更大。

我希望能够像这样制作动画:

 stackView.layoutIfNeeded()
 self.label.text = self.expanded ? textTwo : textOne
 UIView.animateWithDuration(0.3) { () -> Void in
     self.stackView.layoutIfNeeded()
 }

当前,stackview从旧的内容大小“跳转”到新的内容大小,而忽略了动画块。

当然,另一种方法是手动找出布置的 subview 的高度,并为该约束设置动画。如果可能的话,我想避免这种情况。

最佳答案

找到了行之有效的方法:

label.text = expanded ? textOne : textTwo
UIView.animateWithDuration(0.4) { () -> Void in
    self.stackView.setNeedsLayout()
    self.stackView.layoutIfNeeded()
}

不起作用:
label.text = expanded ? textOne : textTwo
UIView.animateWithDuration(0.4) { () -> Void in
    self.stackView.layoutIfNeeded()
}

奇怪的是,更改固有内容的大小并不会使stackView想要布局...

关于ios - 动画UIStackView布置的Subview内容大小更改,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35365691/

10-12 14:50