2011-10-28 9 views
5

Estoy haciendo la transición de la programación de iPhone a las aplicaciones nativas de Mac. Una parte que echo de menos es la simplicidad del sistema de animación UIView.Cómo hacer animaciones de estilo UIView en el desarrollo de la aplicación Cocoa/Mac

que tenían los dos métodos siguientes para una subclase UIView:

-(void) hide{ 
    _isHidden=YES; 
    [UIView commitAnimations]; 
    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
    [UIView setAnimationDuration:0.5]; 
    self.alpha = 0; 
    [UIView commitAnimations]; 
} 
-(void) show{ 
    _isHidden=NO; 
    [UIView commitAnimations]; 
    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
    [UIView setAnimationDuration:0.5]; 
    self.alpha = 1; 
    [UIView commitAnimations];  
} 

ahora no estoy seguro de cómo lograr esto en Cocoa. Intenté lo siguiente, pero no estoy seguro de que funcione como debería.

-(void) hide{ 
    [[_myView animator] setAlpha:0]; 
} 

Llamo a esta función (ocultar) varias veces a veces mientras la función de fundido se puede seguir ejecutando.

Respuesta

15

Esto debería producir el mismo resultado que el código de iOS:

[NSAnimationContext beginGrouping]; { 
    [[NSAnimationContext currentContext] setDuration:.5]; 
    [[NSAnimationContext currentContext] setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; 
    [_myView.animator setAlphaValue:0.0]; 
} [NSAnimationContext endGrouping]; 

La duración predeterminada es de .25 segundos. No estoy seguro de cuál es la función de temporización predeterminada. Si está de acuerdo con los valores predeterminados, puede decir esto:

[_myView.animator setAlphaValue:0.0]; 
+1

No olvide '' importar ' –

Cuestiones relacionadas