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
}
我想不通爲什麼動畫總是彼此不同。如何同時爲兩個標籤設置動畫效果並使其顯示在正確的索引位置,並將標籤上下推?
改變'Content Mode'對'UILabel'的動畫方式有明顯的影響,但看起來並不一致。將它設置爲'.Left'會使標籤「下拉」,但將其設置爲'.Right'使其顯示在視圖的左側。 從側面看,它至少看起來更好看,謝謝! – Casse