当其内在内容大小发生变化时,是否可以对排列的子视图进行动画处理?
例如,假设我有一个已排列的子视图,其中包含固定到边缘的单个 UILabel。该标签有少量文字。新文本出现,比之前的文本大。标签的内在内容尺寸现在更大。
我希望能够像这样制作动画:
stackView.layoutIfNeeded()
self.label.text = self.expanded ? textTwo : textOne
UIView.animateWithDuration(0.3) { () -> Void in
self.stackView.layoutIfNeeded()
}
stackview 当前从旧内容大小“跳转”到新内容大小,忽略动画块。
当然,另一种方法是手动找出排列的子视图的高度,并为该约束设置动画。如果可能的话我想避免这种情况。
找到了有用的东西:
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 需要布局......
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)