La velocidad de animation es diferente entre beginAnimations y el uso de bloque de animaciones.

Estoy tratando de convertir un código de animation que use beginAnimations para usar bloques de animation. El problema que estoy teniendo es que cuando uso los bloques de animaciones las animaciones van mucho más rápido y no puedo ajustar la velocidad cambiando el valor de la duración

Esto es lo que comencé originalmente:

birdFly.image = [UIImage imageNamed: @"bird1.png"]; [self.view addSubview:birdFly]; [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:20]; birdFly.frame = CGRectMake(-1116,27,111,48); [UIView commitAnimations]; [birdFly release]; 

Esto es lo que intenté primero para replace lo que tenía arriba. Usando este código, la animation es mucho más rápida de lo que estaba usando el código original. Incluso cambiar la duración no parece cambiar la velocidad en absoluto:

 birdFly.image = [UIImage imageNamed: @"bird1.png"]; [self.view addSubview:birdFly]; [UIView animateWithDuration:20 animations:^{ birdFly.frame = CGRectMake(-1116,27,111,48); }]; 

También probé esto, pensando que necesitaba un bloque de finalización, pero la velocidad era aún tan rápida en comparación con lo que tenía originalmente cuando no estaba usando bloques.

 birdFly.image = [UIImage imageNamed: @"bird1.png"]; [self.view addSubview:birdFly]; UIViewAnimationOptions options = UIViewAnimationOptionCurveEaseInOut | UIViewAnimationOptionAllowUserInteraction; [UIView animateWithDuration:20 delay:0.0 options:options animations:^ { birdFly.frame = CGRectMake(-1116,27,111,48); } completion:nil]; 

¿El código está haciendo lo mismo? ¿Me estoy perdiendo algo muy simple aquí? Pensé que boost la duración haría que el ave fuera más lento y su disminución lo haría más rápido, pero no parece tener ningún impacto cuando lo cambia usando bloques.

Cualquier orientación sería apreciada.

Gracias.

Aaron

Si su bloque de animation está ocurriendo dentro de otro bloque de animation, -animateWithDuration:animations: henetworkingará la duración del bloque exterior. Intente agregar UIViewAnimationOptionOverrideInheritedDuration a la list de opciones (y posiblemente UIViewAnimationOptionOverrideInheritedCurve si necesita anular la curva también).