Nunca he trabajado con restricciones de autolayout antes. Tengo una nueva aplicación pequeña en la que estoy trabajando y noté que las vistas de la NIB están predeterminadas para la distribución automática. Entonces, pensé que aprovecharía la oportunidad para trabajar con él e intentar averiguar a dónde va Apple con esto.
Primer desafío:
Necesito cambiar el tamaño de un MKMapView y me gustaría animarlo a la nueva posición. Si hago esto como estoy acostumbrado:
[UIView animateWithDuration:1.2f
animations:^{
CGRect theFrame = worldView.frame;
CGRect newFrame = CGRectMake(theFrame.origin.x, theFrame.origin.y, theFrame.size.width, theFrame.size.height - 170);
worldView.frame = newFrame;
}];
... entonces el MKMapView se 'ajustará' a su altura original cada vez que se actualice una vista de hermanos (en mi caso, se está actualizando el título de un UISegmentedControl [myUISegmentedControl setTitle:newTitle forSegmentAtIndex:0]
).
Entonces, lo que creo que quiero hacer es cambiar las restricciones de MKMapView de ser igual a la altura de la vista principal a ser relativa a la parte superior del control UISegmentedControl que estaba cubriendo:V:[MKMapView]-(16)-[UISegmentedControl]
Lo que quiero es que la altura de MKMapView se acorte para que se revelen algunos controles debajo de la vista del mapa. Para hacerlo, creo que necesito cambiar la restricción de una vista fija de tamaño completo a una donde la parte inferior esté restringida a la parte superior de un UISegmentedControl ... y me gustaría animarla a medida que la vista se reduce a un nuevo tamaño.
¿Cómo se hace esto?
Editar - esta animación es no animando a pesar de la parte inferior de la vista se mueve hasta 170 al instante:
[UIView animateWithDuration:1.2f
animations:^{
self.nibMapViewConstraint.constant = -170;
}];
y nibMapViewConstraint
está conectado en IB a la restricción de espacio vertical inferior.