2012-07-12 4 views
2

코어 플롯 분산 형 플롯 (선 그래프와 같은)에서 크기를 조정하여 볼 수 있도록 축척하려고합니다. CorePlot은 일반적인 CALayer를 사용하여 플롯을 구현합니다.CABasicAnimation CorePlot scale in effect

다음과 같이 내가 이것을 달성하기 위해 코어 애니메이션을 사용하고 있습니다 :

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"affineTransform"]; 
animation.duration = 10; 
animation.removedOnCompletion = YES; 
animation.fillMode = kCAFillModeForwards; 
CGAffineTransform start = CGAffineTransformMakeScale(1, 0.1); 
CGAffineTransform end = CGAffineTransformMakeScale(1, 1); 
animation.fromValue = [NSValue valueWithCGAffineTransform:start]; 
animation.toValue = [NSValue valueWithCGAffineTransform:end]; 

[plot addAnimation:animation forKey:@"animation"]; 

문제는이 작동하지 않는 것입니다. 핵심 애니메이션을 사용하는 것은 이번이 처음이므로 뭔가 잘못하고 있다고 생각하고 있습니까?

수정 그래, 내가 잘못된 keypath를 사용하고있는 문제를 발견했습니다.

나는 지금 애니메이션을 얻을 수 있지만 이상한 보이는 :

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.scale.y"]; 
... 
animation.fromValue = [NSNumber numberWithFloat:0.1]; 
animation.toValue = [NSNumber numberWithFloat:1]; 

는 내가하고 싶은 애니메이션이 종류의 배치에서 뻗어 있도록 '위쪽으로 확장'을 가지고있다. 지금 당장은 중심에서 벗어나서 내가 원하는 바가 아닙니다. 어떻게 그 아이디어를 얻을 수 있을까요?

+1

실행하면 어떻게됩니까? – Dustin

+0

아무 반응이 없습니다. 애니메이션이없는 것처럼. 나는 CALayer의 'affineTransform'멤버가 속성이 아닌 메서드임을 알아 냈습니다. 핵심 경로는 속성이어야합니다. – Imran

답변

0

변환은 레이어의 anchorPoint에 상대적입니다. 고정 점을 (0.5, 1,0)로 설정하여 맨 아래에 고정 점을 변경할 수 있습니다. 레이어는 앵커 포인트를 기준으로 그리기 때문에 레이어를 변경할 때 화면상의 위치가 변경 될 수 있습니다. 위치를 지정하려면 앵커 포인트를 변경 한 후 프레임을 설정하거나 위치를 맨 아래로 설정하십시오.

+0

그런 종류의 작동하지만 당신이 말한대로 그것은 그림의 위치를 ​​상당히 바꿉니다. '바닥에 위치를 설정하십시오 (어디에서부터 확장해야하는지)'라는 의미는 무엇입니까? – Imran

+0

일반적으로 위치는 중앙에 있지만 변경되는 기준점을 변경할 때입니다. 앵커 포인트가 (0.5, 1.0)이면 뷰의 중심점이 낮습니다. 더 낮은 중심점이 어디에 있어야하는지 안다면 position 속성을 설정할 수 있습니다. 그렇지 않으면 프레임을 설정할 수 있으며 앵커 포인트가 주어진 적절한 위치를 계산합니다 –