Анимированное скрытое свойство на UILabels в UIStackView вызывает различные анимации
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
}
Я не могу понять, почему анимации всегда отличаются друг от друга. Как анимировать обе метки одновременно и получить эффект, когда они отображаются с правильным индексом, толкая метки выше и ниже?
1 ответ
У меня точно такая же проблема. Я узнал, что установка Content Mode
собственность UILabel
кажется, изменить способ UIView
анимация выполняется. В моем случае я хотел добиться анимации сверху вниз. Анимацией по умолчанию был слайд слева в сочетании с изменением размера. Настройка режима контента на Top
работал на меня.
Может быть, это помогает.