Анимированное скрытое свойство на 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 работал на меня.

Может быть, это помогает.

Другие вопросы по тегам