UIStackView
使用UIView的hidden属性创建一个漂亮的动画非常容易。我在UIStackViews
中有UILabels
两个arrangedSubviews
,当我向UILabel
添加新的UIStackView
时,它应该显示一个动态标签出现在正确的索引处,将标签推到上方和下方。
使用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
}
我无法弄清楚为什么动画总是彼此不同。如何同时为两个标签设置动画并使其在正确的索引处显示效果,将标签推到上方和下方?
答案 0 :(得分:4)
我有完全相同的问题。我发现设置Content Mode
的{{1}}属性似乎改变了UILabel
动画的执行方式。在我的情况下,我想从上到下实现动画。默认动画是左侧的幻灯片和调整大小。将内容模式设置为UIView
对我有用。
也许这有帮助。