UIStackView Hide View Animation

En iOS 11 el comportamiento de la animación oculta dentro de UIStackView ha cambiado, pero no he podido encontrar esto documentado en ningún lado.

iOS 10

animación iOS 10

iOS 11

animación iOS 11

El código en ambos es este:

 UIView.animate(withDuration: DiscoverHeaderView.animationDuration, delay: 0.0, usingSpringWithDamping: 0.9, initialSpringVelocity: 1, options: [], animations: { clear.isHidden = hideClear useMyLocation.isHidden = hideLocation }, completion: nil) 

¿Cómo restauro el comportamiento anterior en iOS 11?

Solo tuve el mismo problema. La solución es agregar stackView.layoutIfNeeded() dentro del bloque de animación. Donde stackView es el contenedor de los artículos que desea ocultar.

 UIView.animate(withDuration: DiscoverHeaderView.animationDuration, delay: 0.0, usingSpringWithDamping: 0.9, initialSpringVelocity: 1, options: [], animations: { clear.isHidden = hideClear useMyLocation.isHidden = hideLocation stackView.layoutIfNeeded() }, completion: nil) 

No estoy seguro de por qué esto de repente es un problema en iOS 11, pero para ser justos, siempre ha sido el enfoque recomendado.

Esto puede suceder si intenta realizar la animación desde viewDidLoad. En su lugar, debe realizar la animación en / después de viewDidAppear