在UIStackView中动画UILabels上的隐藏属性会导致不同的动画
问题描述:
UIStackView
使用UIView的隐藏属性很容易创建一个很好的动画。我有两个UIStackViews
,每个UILabels
在arrangedSubviews
中,当我将一个新的UILabel
添加到UIStackView
时,它应该显示一个标签出现在正确索引处的动画,并将标签推到其上下。在UIStackView中动画UILabels上的隐藏属性会导致不同的动画
这种效果是非常容易使用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
}
我想不通为什么动画总是彼此不同。如何同时为两个标签设置动画效果并使其显示在正确的索引位置,并将标签上下推?
答
我有完全相同的问题。我发现设置UILabel
的Content Mode
属性似乎改变了UIView
动画的执行方式。在我的情况下,我想实现从上到下的动画。默认动画是从左侧滑入并重新调整大小。设置内容模式为Top
为我工作。
也许没有什么帮助。
改变'Content Mode'对'UILabel'的动画方式有明显的影响,但看起来并不一致。将它设置为'.Left'会使标签“下拉”,但将其设置为'.Right'使其显示在视图的左侧。 从侧面看,它至少看起来更好看,谢谢! – Casse