Estou fazendo a transição da programação do iPhone para aplicativos nativos do Mac. Uma parte que sinto falta é a simplicidade do sistema de animação UIView.
Eu tinha os dois métodos a seguir para uma subclasse 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];
}
Agora não tenho certeza de como fazer isso no cacau. Tentei o seguinte, mas não sei se funciona como deveria.
-(void) hide{
[[_myView animator] setAlpha:0];
}
Eu chamo essa função (ocultar) várias vezes, às vezes, enquanto a função fade ainda pode estar em execução.
Respostas:
15 para resposta № 1Isso deve produzir o mesmo resultado que o seu código iOS:
[NSAnimationContext beginGrouping]; {
[[NSAnimationContext currentContext] setDuration:.5];
[[NSAnimationContext currentContext] setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[_myView.animator setAlphaValue:0.0];
} [NSAnimationContext endGrouping];
A duração padrão é 0,25 segundos. Não sei qual é a função de tempo padrão. Se você concorda com os padrões, basta dizer o seguinte:
[_myView.animator setAlphaValue:0.0];