UIStackView
позволяет очень легко создать красивую анимацию, используя скрытое свойство UIView. У меня есть два 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
}
Я не могу понять, почему анимации всегда отличаются друг от друга. Как одновременно анимировать обе метки и получить эффект, когда они появляются в правильном индексе, перемещая метки выше и ниже?