UIView cambios animados con restricciones de diseño automático
Digamos que tengo un proyecto que se parece a lo siguiente:
Hay dosUIView
s - uno llamadoyellowBox
y el otro llamadoredBox
. Las restricciones de diseño automático dictan que elyellowBox
está a 60 puntos de la parte superior de la vista de supervisión con 350 puntos en los espacios iniciales y finales (es decir, a la izquierda y derecha de la vista). losredBox
tiene las mismas restricciones de espacio iniciales y finales. Hay una restricción de espacio vertical entre las dos casillas de 0 para indicar que la parte inferior de layellowBox
Siempre debe estar directamente encima de laredBox
.
Cuando el usuario toca el botón Expandir cuadro amarillo, me gustaría que la altura delyellowBox
aumentar y, como resultado, laredBox
se mueve hacia abajo para continuar satisfaciendo la restricción de espacio vertical (que layellowBox
siempre está encima de laredBox
). Aquí está el código de animación:
- (IBAction)expandYellowBox:(id)sender {
[UIView animateWithDuration:0.5
animations:^{
CGRect newFrame = self.yellowBox.frame;
newFrame.size.height += 50;
self.yellowBox.frame = newFrame;
}];
}
Sin embargo, no he podido hacer que esto funcione correctamente. Como puede ver con el icono rojo, hay un problema con las restricciones en este momento:
lo cual es justo, ya que no hay forma de que el diseño automático sepa la altura de las cajas. Sin embargo, no sé cómo resolver este problema de tal manera que permita que las cajas cambien de tamaño y se muevan. Por ejemplo, si especifico una restricción de altura en elyellowBox
entonces eso evitará que se redimensione. Si configuro la restricción de altura para que seamayor que o igual (para permitir elyellowBox
altura para aumentar) luego me sale un error de restricción diferente:
Todas las restricciones se han establecido utilizando Xcode en el guión gráfico, ninguna se ha escrito en código.
Cualquier ayuda muy apreciada.
EDITAR: Como resultado, layellowBox
está creciendo cuando se hace clic en el botón; es solo que no pude ver porque aparece detrás de laredBox
. Solo lo noté después de hacer clic cuatro veces y comenzó a aparecer en la parte inferior de la pantalla.redBox
. Sin embargo, la misma pregunta sigue siendo: cómo obtener elredBox
para siempre pegarse al fondo de layellowBox
.