ios animation ¿Cómo afectan las animaciones anidadas a la duración?

Digamos que tengo una UIAnimation cronometrada, en el formatting de

[UIView animateWithDuration:DURATION_X animations:^ { [function that might contain a separate animation with DURATION_Y] } completion:^(BOOL finished) { [function that might contain a separate animation with DURATION_Z] }]; 

Si las animaciones anidadas también tienen duraciones dentro de ellas, ¿cómo afecta eso a la animation exterior? ¿Las animaciones internas se ejecutan con DURATION_Y y DURATION_Z, respectivamente, sin importar lo que DURATION_X sea? ¿O las animaciones DURATION_Y se networkingucen o se networkingucen para finalizar con respecto a DURATION_X, suponiendo DURATION_X <= DURATION_Y?

Básicamente, lo que estoy preguntando en pocas palabras es cómo podemos controlar la duración de las animaciones internas de manera segura, para asegurarnos de que se ejecuten con DURATION_Y (y no con una versión más corta) incluso cuando la animation más externa tiene una DURATION_X diferente y más corta.

AFAIU, la animation interna toma el control sobre la duración que se menciona en el bloque de animation externo. Mientras que, la function dentro del bloque de finalización no parece esperar hasta que el bloque de animation principal termine su tarea de animation con la duración de time dada.

Entonces, digamos que DURATION_X es 5 segundos, DURATION_Y es 20 segundos y DURATION_Z es 10 segundos, respectivamente. Lo que sucede es que la function de animation dentro del bloque de terminación se activa una vez que el control completa (yendo a la function y hace lo que sea) el bloque de animation principal (Habiendo dicho que la function dentro del bloque de animation principal tiene una duración de time diferente). Por lo tanto, la function dentro del bloque de finalización se ejecuta con DURATION_Z y anima por la duración exacta mencionada en DURATION_Z.

A lo largo del lado, la function dentro del bloque de animation principal se ejecuta durante el time especificado en DURATION_X SOLO. Ignora la duración del time de DURATION_Y. Un fragment de código extravagante aquí es:

 -(void)doSomeAnim { [UIView animateWithDuration:5.0 animations:^ { [self animateOrangeBoy]; } completion:^(BOOL finished) { [self animateBlueBoy]; }]; } -(void)animateOrangeBoy { [UIView animateWithDuration:20.0 animations:^{ orangeView.frame = CGRectMake(orangeView.frame.origin.x, orangeView.frame.origin.y + 300, orangeView.frame.size.width, orangeView.frame.size.height); }]; } -(void)animateBlueBoy { [UIView animateWithDuration:10.0 animations:^{ blueView.frame = CGRectMake(blueView.frame.origin.x, blueView.frame.origin.y + 300, blueView.frame.size.width, blueView.frame.size.height); }]; } 

Entonces, animateBlueBoy también comienza junto con el animateOrangeBoy pero animateOrangeBoy dura solo 5 segundos, pero animateBlueBoy va hasta 10 segundos.