7

Duplicar posibles:
iPhone CATransition adds a fade to the start and end of any animation?Cómo realizar la animación kCATransitionPush sin ninguna transparencia/desvanecerse efectos

Estoy tratando de duplicar el "deslizarse hacia arriba desde el fondo" animación que [UIViewController presentModalViewController: animated:] funciona pero sin llamar porque no quiero una vista modal.

El código de animación subyacente a continuación aparece muy cerca pero parece estar cambiando los valores de transparencia de las vistas durante el mismo. Al comienzo de la animación, puede ver parcialmente la vista deslizándose hacia arriba. En el medio/final de la animación, la vista sobre la que nos deslizamos es completamente transparente para que podamos ver detrás de ella. Me gustaría que ambos permanezcan completamente opacos durante esta animación.

¿Alguna idea sobre cómo detener la transparencia cambia en este código u obtener la "animación deslizante" que estoy buscando sin requerir una vista modal?

UIViewController *nextViewController = [[UIViewController alloc] autorelease]; 
nextViewController.view.backgroundColor = [UIColor redColor]; 
CATransition *animation = [CATransition animation]; 
animation.duration = 3.5; 
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
animation.type = kCATransitionPush; 
animation.subtype = kCATransitionFromTop; 
[self.navigationController pushViewController:nextViewController animated:NO]; 
[self.navigationController.view.layer addAnimation:animation forKey:nil]; 

Respuesta

0

En lugar de la CATransition, en su lugar podría intentar usar un CABasicAnimation que anima la posición de la parte superior de la pantalla en la posición deseada.

2

El método más simple es simplemente usar el bloque UIView beginAnimations/commitAnimations. Puede ajustar la duración y la curva revisando los documentos.

{ 
    // Adjust for orientation as necessary. 
    view.frame = CGRectMake(0, 
         -480, 
         320, 
         480); 

    [UIView beginAnimations:nil context:nil]; 

    view.frame = CGRectMake(view.frame.origin.x, 
         0, 
         view.frame.size.width, 
         view.frame.size.height); 

    [UIView commitAnimations]; 
} 

Docs aquí:

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIView_Class/UIView/UIView.html

+0

No puedo entender la solución. ¿Podrías explicarlo un poco más? – jalopezsuarez

+0

Esta es una respuesta muy antigua, deberías usar las aplicaciones de bloque de animación UIVIew ahora. https://developer.apple.com/library/ios/documentation/WindowsViews/Conceptual/ViewPG_iPhoneOS/AnimatingViews/AnimatingViews.html – logancautrell

Cuestiones relacionadas