Animar la altura de UIView cuando se usa el layout automático con swift

Antes del layout automático, he estado animando la altura de un background en un proyecto al establecer el marco sobre animateWithDuration .

 func setUpBackground() { self.backgroundView.frame = CGRect(x: 0, y: 0, width: 320, height: 10) self.backgroundView.backgroundColor = UIColorFromRGB(0x2d2d2d).CGColor } func AnimateBackgroundHeight() { UIView.animateWithDuration(0.5, animations: { self.backgroundView.frame = CGRect(x: 0, y: 0, width: 320, height: 600) }) } 

Después de convertir mi proyecto al layout automático, noté que la animation se produce, pero la altura del background vuelve a ajustarse al tamaño / estilo original (configuration del generador de interfaces) después. Leí que cuando el layout automático está activado, las restricciones sobrescribirán la configuration de las dimensiones CGRect con CGRect .

Por lo tanto, me pregunto cómo lograr el mismo efecto de animation de cambio de altura con el layout automático activado.

Dele a su vista de background una restricción de altura y haga un IBOutlet. En el código, modifique el valor constante de la restricción.

 func AnimateBackgroundHeight() { UIView.animateWithDuration(0.5, animations: { self.heightCon.constant = 600 // heightCon is the IBOutlet to the constraint self.view.layoutIfNeeded() }) } 

También para aquellos de ustedes que encuentren esta publicación tratando de averiguar por qué una transición que cambia el tamaño de una vista será obstructiva o impura, solo necesita encontrar la vista a cargo y llamar a self.view.layoutIfNeeded() dentro del bloque UIView.animateWithDuration . Estaba golpeando mi cabeza contra la panetworking intentando cosas diferentes con limitaciones y haciendo frameworks hasta darme count de que self.view.layoutIfNeeded() se encargaría de hacer que la transición fuera uniforme, siempre y cuando la estés colocando en la location correcta.