2013-03-01 5 views
1

iOS에서 선분 개체을 만들고 싶습니다. 시작점과 끝점을 애니메이션으로 만듭니다 (Microsoft의 WPF에서이 작업을 수행 할 수 있습니다).iOS의 애니메이션 선 애니메이션

현재, 나는 스트레치이 변환을 사용하여를 회전 작은 CALayer로 선분 개체를 만듭니다.

+(LayLine*) layLineWithStartPoint:(CGPoint)ptStart andEndPoint:(CGPoint)ptEnd{ 
    LayLine* line = [[LayLine alloc] init]; 
    line.backgroundColor = [UIColor blackColor].CGColor; 
    line.frame = CGRectMake(0,-1,1,2); // Line 1 pixel long and 2 pixel wide line segment 
    line.anchorPoint = CGPointMake(0,0); 

    line.affineTransform = [LayLine affineTransformationForLineSegment:ptStart to:ptEnd]; 
    return line; 
} 

변환을 변경하여이 선분을 애니메이션 할 수 있습니다.

반 가공품이지만 애니메이션에서는 끝점이 직선을 따르지 않으므로 완벽하지는 않습니다. 따라서 애니메이션을 만들 수있는 선분 개체를 만드는 더 좋은 방법이 있는지 궁금합니다.

+0

얘기하는 애니메이션의 어떤 종류의? 두 지점이 서로 다른 경로로 이동합니까? 아니면 동일하고 일정한 경로상의 다른 위치입니까? – Tommy

+0

@ 토미, 귀하의 질문에 이해가 잘 모르겠지만, ptStartA-ptEndA는 ptStartB-ptEndB로 이동해야합니다 (선분 B는 선분 A에 수직 일 수 있음). – ragnarius

답변

3

CAShapeLayer을 사용하고 두 개의 제어점 만 포함하는 CGPath를 만들 수 있습니다. CAShapeLayer 자체의 path 속성은 실제로 (새로운 경로가 같은 수의 포인트를 가진 한) 애니메이션 가능하며 CALayer의 모든 변환 기능을 얻습니다. 그리고 방금 언급 한 Tommy처럼 strokeStartstrokeEnd으로 재생할 수 있습니다 (lineDashPhase으로 멋지게 움직이는 lineDashPattern도 있습니다.하지만 그럴 필요는 없습니다). this question에서

코드 샘플 :

CAShapeLayer *lineShape = nil; 
CGMutablePathRef linePath = nil; 
linePath = CGPathCreateMutable(); 
lineShape = [CAShapeLayer layer]; 

lineShape.lineWidth = 1.0f; 
lineShape.lineCap = kCALineJoinMiter; 
lineShape.strokeColor = [[UIColor redColor] CGColor]; 

CGPathMoveToPoint(linePath, NULL, x, y); 
CGPathAddLineToPoint(linePath, NULL, toX, toY); 

lineShape.path = linePath; 
CGPathRelease(linePath); 
+2

... 내가 물었던 질문은 'strokeEnd' 및'strokeStart' 속성도 애니메이션 가능하기 때문에 관련이 있습니다. 경로 만 남겨두고 관심있는 부분이 있다면 그 부분을 애니메이션으로 나타낼 수 있습니다. 내 애플 리케이션 중 하나에서 원형 진행률 표시 줄에 이것을 사용합니다. 이것은 뚱뚱한 획을 가진 원형 경로이고 Core Animation이'strokeEnd'에 대한 작업을하도록합니다. – Tommy

+0

경로를 애니메이트하려면 NSValue로 변환해야합니다. – ragnarius

+1

어떻게 움직이는 지 모르겠다.하지만 CGPathRef는'id' 타입으로 연결될 수있다. http://stackoverflow.com/questions/9513082/cashapelayer-animating-path-glitches-flickers-from-ellipse-to-rect-and-back –

관련 문제