2011-04-09 5 views
1

가 나는 CALayer의 배경 색상을 애니메이션이 코드를 사용하려고 시도하고있어 작동하지 않습니다코어 애니메이션 - 애니메이션

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"backgroundColor"]; 
animation.duration = 0.3; 
animation.fromValue = (id)[backgroundLayer backgroundColor]; 
animation.toValue = (id)[[UIColor redColor] CGColor]; 
[backgroundLayer addAnimation:animation forKey:@"animateBackgroundColor"]; 

을 어떤 이유로,이 아무것도하지 않습니다.

[backgroundLayer setBackgroundColor:[[UIColor redColor] CGColor]]; 

작품을 (비록 애니메이션없이) 사용 : 간단하게 사용

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"opacity"]; 
animation.duration=0.3; 
animation.fromValue = [NSNumber numberWithFloat:1.0]; 
animation.toValue = [NSNumber numberWithFloat:0.0]; 
[backgroundLayer addAnimation:animation forKey:@"animateOpacity"]; 

작품을 너무 (애니메이션).

왜 배경색을 애니메이트 할 수 없습니까?

편집 : 문제는 내 backgroundColor이 (단색을 사용하여 작동합니다 ... UIImage의 구현을 사용) 패턴 이미지로 생성된다는 사실과 관련이 있습니다. 나는 아직도이 문제에 대한 해답을 찾고있다.

답변

3

코어 애니메이션은 사용자가 지정한 키 값 사이에서 중간 값을 계산하여 보간법을 사용하여 작동합니다. 키 프레임 애니메이션 인 경우 값 배열의 값 (n) 사이를 보간합니다. 기본 애니메이션 인 경우 시작 값과 끝 값의 두 값을 보간합니다. CA는 RGBA 부동 소수점 값으로 표시되기 때문에 두 단색 사이에서 계산을 잘 할 수 있지만 이미지간에 값을 보간하는 방법은 무엇입니까? 내가 할 수 있다고 믿지 않는 일종의 모핑을해야 할 것입니다. 모핑 효과가 필요한 경우보기에서 배경 이미지간에 전환하는 것이 좋습니다. 기본 효과는 크로스 페이드/디졸브 효과입니다. 그건 정확히 당신이 찾고있는 것이 아니지만 꽤 가까워 질 수 있습니다.

감사합니다.

관련 문제