UIStackView
可以很容易地使用UIView的hidden属性创建漂亮的动画。我有两个UIStackViews
,每个都有arrangedSubviews
中的UILabels
,当我向一个UIStackView
添加一个新的UILabel
时,它应该以正确的索引呈现它,并将其上下方的标签推入。这个效果使用UIStackViews
非常容易实现。descriptionLabel.hidden = true
let count = descriptionStack.arrangedSubviews.count
descriptionStack.insertArrangedSubview(expenseLabel.descriptionLabel, atIndex: count - 1)
UIView.animateWithDuration(0.5) {
descriptionLabel.hidden = false
}
我希望同时对两个不同的
UIStackViews
实现这种效果,但这会导致一些奇怪的行为,其中一个正确地进行动画,而另一个则从视图顶部掉落。
假设上述代码可以重复用于其他视图并创建相同的动画:descriptionLabel.hidden = true
costLabel.hidden = true
let count = descriptionStack.arrangedSubviews.count
descriptionStack.insertArrangedSubview(expenseLabel.descriptionLabel, atIndex: count - 1)
costStack.insertArrangedSubview(expenseLabel.costLabel, atIndex: count - 1)
UIView.animateWithDuration(0.5) {
descriptionLabel.hidden = false
UIView.animateWithDuration(0.5) {
costLabel.hidden = false
}
}
在这个例子中,
costLabel
正确地进行了动画处理,而 descriptionLabel
从 UIStackView
的顶部下降。反转顺序会导致 costLabel
下降,而 descriptionLabel
则正确地进行动画处理。我已经尝试过这个动画代码的各种变化,例如不嵌套动画并使用
UIView.animateKeyframesWithDuration
。按照以下方式进行操作,会导致
costLabel
下降,而 descriptionLabel
将正确地进行动画处理:UIView.animateWithDuration(0.5) {
descriptionLabel.hidden = false
}
UIView.animateWithDuration(0.5) {
costLabel.hidden = false
}
我无法理解为什么这些动画总是不同。我应该如何同时对两个标签进行动画处理,使它们在正确的位置出现,并将标签推到上下方?