CALayer animações explícitas não comportando adequadamente

votos
3

Implicitamente as coisas se comportam bem. Mas quando eu tento usar animações explícitas para fazer várias animações em uma única camada (por exemplo, opacidade e tradução) eu obter resultados estranhos.

Primeiro de tudo, eu tentei usar CATransaction. Então eu mudei para CAAnimationGroup. Ambos não parece conseguir o que quero.

O que eu quero? Tudo o que desejo é para uma camada para se deslocar de um ponto para outro, com uma opacidade inicial e uma opacidade alvo. é isso aí!

O que eu estou vendo? Aqui está um exemplo ...

Ao realizar uma transação begin / commit, a tradução parece estar correta, mas a opacidade não é. Meu opacidade início é 0, ea opacidade meta é de 0,5. No entanto, quando i executar as animações, mistura-se a 0,5, mas em seguida, agarra a 1,0 (totalmente opaco).

Eu tentei definindo o removedOnCompletion de NO. mas esse não quer ajudar. Eu acho que o resultado final é que eu preciso saber a diferença entre um AnimationGroup e uma Transação.

Alguém pode explicar isso, e possivelmente o que estou vendo sobre a estranheza das minhas animações?

Obrigado!

Publicado 27/08/2009 em 07:09
fonte usuário
Em outras línguas...                            


2 respostas

votos
1

Ok, animações explícitas Arent trabalhando para mim. I tentado criar uma animação de base para a opacidade (de uma camada). I colocado esta dentro de um grupo de animação. Quando eu executar, nada acontece. Para simplificar i tirou animações de tradução. Isso só está tentando fazer animação de opacidade.

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"];
Respondeu 28/08/2009 em 06:26
fonte usuário

votos
0

Você tem que definir a opacidade camadas para o valor após a animação em animações explícitas.

layer.opacity=0.0f;
Respondeu 30/03/2012 em 08:26
fonte usuário

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