CALayer animations explicites ne se comporte pas correctement

voix
3

Implicitement choses se comportent bien. Mais lorsque je tente d'utiliser des animations explicites pour faire des animations multiples sur une seule couche (par exemple, d'opacité et de traduction) Je reçois des résultats étranges.

Tout d'abord, j'ai essayé d'utiliser CATransaction. Puis je suis passé à CAAnimationGroup. Les deux semblent ne marche pas ce que je veux.

Ce que je veux? Tout ce que je veux est une couche de passer d'un point à un autre avec une opacité initiale et une opacité cible. c'est tout!

Qu'est-ce que je vois? Voici un exemple ...

Lorsque vous effectuez une transaction BEGIN / COMMIT, la traduction semble correcte, mais l'opacité est pas. Mon opacité de départ est 0, et l'opacité cible est de 0,5. Cependant quand je lance les animations, il se mélange à 0,5, mais « se mette » à 1,0 (complètement opaque).

J'ai essayé le réglage de la removedOnCompletion NO. mais cela n'a pas aidé non plus. Je pense que l'essentiel est que j'ai besoin de connaître la différence entre un AnimationGroup et une transaction.

Quelqu'un peut-il expliquer cela, et peut-être ce que im voir au sujet de la bizarrerie de mes animations?

Merci!

Créé 27/08/2009 à 07:09
source utilisateur
Dans d'autres langues...                            


2 réponses

voix
1

Ok, animations explicites ne coûtent pas de travail pour moi. J'ai essayé de créer une animation de base pour l'opacité (d'une couche). Je mis cela à l'intérieur d'un groupe d'animation. Quand j'exercerai, rien ne se passe. Par souci de simplicité, j'ai pris des animations de traduction. Ce ne cherche à faire de l'animation d'opacité.

CAAnimationGroup *group = [CAAnimationGroup animation];

CABasicAnimation *opacityAnimation;     
opacityAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"];  
opacityAnimation.fromValue = [NSNumber numberWithDouble:fromalpha];     
opacityAnimation.toValue = [NSNumber numberWithDouble:toalpha];     
opacityAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
opacityAnimation.delegate = self;
opacityAnimation.duration = 2.7;        

opacityAnimation.removedOnCompletion = NO;

group.animations = [NSArray arrayWithObjects: opacityAnimation, nil];
[baseLayer addAnimation:group forKey:@"groupAnim"];
Créé 28/08/2009 à 06:26
source utilisateur

voix
0

Vous devez définir les couches d'opacité à la valeur après l'animation dans les animations explicites.

layer.opacity=0.0f;
Créé 30/03/2012 à 08:26
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more