Animar properties ocultas en UILabels en UIStackView provoca diferentes animaciones

UIStackView hace que sea realmente fácil crear una animation agradable usando la propiedad oculta de una UIView. Tengo dos UIStackViews cada uno con UILabels en las UILabels arrangedSubviews y cuando agrego una nueva UILabel a un UIStackView , debería presentarlo con una animation de la label que aparece en el índice correcto, empujando las tags arriba y debajo.

Este efecto es muy fácil de hacer usando UIStackViews :

 descriptionLabel.hidden = true let count = descriptionStack.arrangedSubviews.count descriptionStack.insertArrangedSubview(expenseLabel.descriptionLabel, atIndex: count - 1) UIView.animateWithDuration(0.5) { descriptionLabel.hidden = false } 

Quiero hacer este efecto simultáneamente para dos UIStackViews diferentes, pero esto provoca un comportamiento extraño, en el que uno está animado correctamente mientras el otro cae desde la parte superior de la vista. Suponiendo que el código anterior se puede repetir para alguna otra vista y crear la misma animation:

 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 } } 

En este ejemplo, costLabel está animado correctamente, mientras que descriptionLabel cae desde la parte superior de UIStackView . Si invierte el order, la costLabel caerá y descriptionLabel animará correctamente.

He intentado variaciones de este código de animation, por ejemplo, no anidar las animaciones y usar UIView.animateKeyframesWithDuration .

Si lo hace como se muestra a continuación, hace que se costLabel la costLabel y que la descriptionLabel anime correctamente:

 UIView.animateWithDuration(0.5) { descriptionLabel.hidden = false } UIView.animateWithDuration(0.5) { costLabel.hidden = false } 

No puedo entender por qué las animaciones son siempre diferentes entre sí. ¿Cómo animo ambas tags simultáneamente y tengo el efecto donde aparecen en el índice correcto, empujando las tags arriba y abajo?

Tengo exactamente el mismo problema. Descubrí que configurar la propiedad Content Mode de UILabel parece cambiar la forma en que se realiza la animation UIView . En mi caso, quería lograr una animation de principio a fin. La animation pnetworkingeterminada era una diapositiva desde la izquierda combinada con un cambio de tamaño. Establecer modo de contenido en la parte Top funcionó para mí.

Tal vez eso ayuda.