动画UIStackView排列的子视图内容大小更改

当内部内容大小改变时,是否可以对已排列的子视图进行动画制作?

例如,假设我有一个排列的子视图,它包含固定到边的单个UILabel。 该标签有少量文字。 新文本进入,比前面的文本更大。 标签的内在内容尺寸现在更大。

我希望能够像这样进行动画处理:

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

堆栈视图当前从旧内容大小跳到新的大小,忽略动画块。

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


找到可行的东西:

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()
}

奇怪的是,改变内在的内容大小并不会使堆栈视图需要布局,尽管...

链接地址: http://www.djcxy.com/p/32189.html

上一篇: Animating UIStackView arrangedSubview content size change

下一篇: If a word is highlighted and user clicks the connecting word, highlight both