web-dev-qa-db-fra.com

changement alpha d'animation

J'ai toujours travaillé avec Flash, et il est assez facile de changer les valeurs alpha d'une image à l'autre. Existe-t-il un moyen de le faire dans xcode 4? J'anime un logo et j'ai besoin que le premier png disparaisse tandis que le second commence à apparaître. tnx!

26
Melisa D

Alternativement à la méthode d'esqew (qui est disponible avant iOS 4, vous devriez donc probablement l'utiliser à la place si vous ne prévoyez pas de limiter votre travail à seulement iOS 4), il y a aussi [UIView animateWithDuration:animations:], qui vous permet de faire l'animation dans un bloc. Par exemple:

[UIView animateWithDuration:3.0 animations:^(void) {
    image1.alpha = 0;
    image2.alpha = 1;
}];

Assez simple, mais encore une fois, cela n'est disponible que sur iOS 4, alors gardez cela à l'esprit.

52
nil

Autre solution, fondu en entrée et en sortie:

//Disappear
[UIView animateWithDuration:1.0 animations:^(void) {
       SplashImage.alpha = 1;
       SplashImage.alpha = 0;
}
completion:^(BOOL finished){
//Appear
   [UIView animateWithDuration:1.0 animations:^(void) {
      [SplashImage setImage:[UIImage imageNamed:sImageName]];
      SplashImage.alpha = 0;
      SplashImage.alpha = 1;
 }];
}];
11
ChavirA

C'est assez simple en fait. Placez le code suivant à l'endroit où vous souhaitez que l'animation se produise:

[UIView beginAnimations:NULL context:NULL];
[UIView setAnimationDuration:3.0]; // you can set this to whatever you like
/* put animations to be executed here, for example: */
[image1 setAlpha:0];
[image2 setAlpha:1];
/* end animations to be executed */
[UIView commitAnimations]; // execute the animations listed above

Vous pouvez en savoir plus sur ces méthodes dans ce document .

Si vous souhaitez travailler avec une structure à laquelle vous avez fait référence dans votre commentaire sur cette question:

[UIView beginAnimations:NULL context:NULL];
[UIView setAnimationDuration:3.0]; // you can set this to whatever you like
/* put animations to be executed here, for example: */
[[introAnimation objectAtIndex:0] setAlpha:0];
[[introAnimation objectAtIndex:1] setAlpha:1];
/* end animations to be executed */
[UIView commitAnimations]; // execute the animations listed above

... devrait marcher.

6
esqew