El cambio de restricción de layout automático no anima

Estaba aprendiendo el layout automático con animaciones del tutorial

http://weblog.invasivecode.com/post/42362079291/auto-layout-and-core-animation-auto-layout-was

y las cosas funcionaban perfectamente.

Cuando traté de usar este concepto en mi aplicación, tratando de animar una pantalla de configuration (una UIView) de abajo hacia arriba, funciona muy bien cuando la pantalla de configuration es solo una vista UIV vacía,

Pero en caso de que añada una UILabel como una subvista a esta pantalla de configuration, la animation desaparecerá. Al quitar este UILabel de la pantalla de configuration, la animation está visible.

Aquí están los puntos de venta que he conectado

__weak IBOutlet UIView *settingsView; __weak IBOutlet NSLayoutConstraint *settingsBottomConstraint; __weak IBOutlet NSLayoutConstraint *settingsViewHeightConstraint; 

Ver el método de configuration de carga (setupViews)

 -(void)setupViews { settingsBottomConstraint.constant = - settingsViewHeightConstraint.constant; [settingsView setNeedsUpdateConstraints]; [settingsView layoutIfNeeded]; isSettingsHidden = YES; } 

Ocultar / mostrar el método

 - (IBAction)showSettingsScreen:(id)sender { if (isSettingsHidden) { settingsBottomConstraint.constant = 0; [settingsView setNeedsUpdateConstraints]; [UIView animateWithDuration:.3 animations:^{ [settingsView layoutIfNeeded]; }]; } else{ settingsBottomConstraint.constant = - settingsViewHeightConstraint.constant; [settingsView setNeedsUpdateConstraints]; [UIView animateWithDuration:0.3 animations:^{ [settingsView layoutIfNeeded]; }]; } isSettingsHidden = !isSettingsHidden; } 

Mi problema parece similar al Problema con UIView Auto Layout Animation

Encontré la respuesta

En lugar de,

 [settingsView layoutIfNeeded]; 

esta línea hizo que funcionara como encanto,

 [self.view layoutIfNeeded]; 

Supongo que necesitamos realizar el método layoutIfNeeded en la vista principal, no solo la vista que intentamos animar.

ACTUALIZACIÓN: Como se señaló en un comentario de Codyko, esto es necesario para iOS 7, iOS 10 . Para iOS 8, este problema no existe.