UIStackView中UILabels上的隐藏属性动画会导致不同的动画
UIStackView
使用UIView的hidden属性创建一个漂亮的动画非常容易。 我在UIStackViews
有两个UIStackViews
每个都有UILabel
,当我向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
已正确costLabel
动画,而descriptionLabel
则从UIStackView
的顶部UIStackView
。 costLabel
订单会导致costLabel
进入并且descriptionLabel
正确地设置动画。
我尝试过这个动画代码的变体,例如没有嵌套动画和使用UIView.animateKeyframesWithDuration
。
如下所示,导致costLabel
进入并且descriptionLabel
正确地设置动画:
UIView.animateWithDuration(0.5) { descriptionLabel.hidden = false } UIView.animateWithDuration(0.5) { costLabel.hidden = false }
我无法弄清楚为什么动画总是彼此不同。 如何同时为两个标签设置动画并使其在正确的索引处显示效果,将标签推到上方和下方?
我也有完全一样的问题。 我发现设置UILabel
的Content Mode
属性似乎改变了UIView
动画的执行方式。 在我的情况下,我想从上到下实现动画。 默认动画是左侧的幻灯片和resize。 将Content Mode设置为Top
为我工作。
也许这有帮助。