UIView curva de animation no funciona easeinout

Estoy perplejo por una tarea muy simple, quiero una animation UIView para facilitar / desactivar pero siempre es lineal a pesar de usar la opción de animation correcta.

Aquí está el código que por todas las counts debería funcionar, está configurado en una class UIViewControllerAnimatedTransitioning, pero tengo el mismo problema en una class segue personalizada anterior;

[UIView animateWithDuration:0.4f delay:0.0f options:UIViewAnimationOptionCurveEaseInOut animations:^(void) { self.dimView.alpha = 1.0; self.imageView.frame = self.destinationRect; } completion:^(BOOL finished) { [self.imageView removeFromSuperview]; [self.dimView removeFromSuperview]; [transitionContext completeTransition:YES]; }]; 

Sin embargo, una animation de resorte con el siguiente código funciona aunque prefiero no hacer esto.

 [UIView animateWithDuration:0.8f delay:0 usingSpringWithDamping:0.7f initialSpringVelocity:2.0f options:UIViewAnimationOptionCurveEaseInOut animations:^(void) { self.dimView.alpha = 1.0; self.imageView.frame = self.destinationRect; } completion:^(BOOL finished){ [self.imageView removeFromSuperview]; [self.dimView removeFromSuperview]; [transitionContext completeTransition:YES]; }]; 

Estoy obteniendo el mismo comportamiento en el simulador y en un dispositivo de testing iPad2. ¿Estoy haciendo algo mal? ¿Hay problemas con la animation de frameworks o valores alfa?

    Podrías probar esto.

     [UIView beginAnimations:nil context:NULL]; [UIView setAnimationBeginsFromCurrentState:YES]; [UIView setAnimationDuration:0.4f]; [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; [UIView setAnimationDelegate:self]; [UIView setAnimationDidStopSelector:@selector(animationDidStop)]; self.dimView.alpha = 1.0; self.imageView.frame = self.destinationRect; [UIView commitAnimations]; - (void) animationDidStop { [self.imageView removeFromSuperview]; [self.dimView removeFromSuperview]; [transitionContext completeTransition:YES]; } 

    Espero eso ayude.

    Puede usar lo siguiente:

    [auto transición: izquierda]; // Llamar según sea necesario

     enum animationFrom { top, bottom, left, right }; - (void)transition:(NSUInteger)index { CATransition *tr=[CATransition animation]; tr.duration=0.45; tr.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; tr.type=kCATransitionPush; tr.delegate=self; switch (index) { case top: tr.subtype=kCATransitionFromBottom; break; case bottom: tr.subtype=kCATransitionFromTop; break; case left: tr.subtype=kCATransitionFromRight; break; case right: tr.subtype=kCATransitionFromLeft; break; default: break; } [self.view.layer addAnimation:tr forKey:nil]; } 

    La opción de curva de animation pnetworkingeterminada es UIViewAnimationOptionCurveEaseInOut , por lo que no es necesario que especifique esta. Es UIViewAnimationOptionCurveLinear que tienes que ser explícito.

    ¿Estás seguro de que tu curva de animation es lineal? Intente animar dos vistas al costado, con la duración de la animation establecida en unos pocos segundos.