2011-02-17 5 views
0

저는 Apple에서 Core Animation Cook Book 및 Core Animation Programming Guide를 읽었습니다. 그러나 자세한 내용 중 일부는 잘 모르겠습니다.CALayer 내에서 NSBezierPath를 움직일 수 있습니까?

항상 전체 CALayer를 애니메이트해야합니까, 아니면 CALayer 내에서 애니메이션을 적용 할 수 있습니까?

레이어 내에 NSBezierPath를 그렸고이 레이어를 다른 위치로 이동/이동하려면 어떻게해야합니까? 당신이 나를 지적 할 수있는 예가 있습니까?

답변

5

일반적으로 최적의 성능을 위해 CALayer 전체에 애니메이션을 적용합니다. 베 지어 경로의 위치를 ​​바꾸는 것이 전부라면 CALayer의 속성 인 position 또는 frame을 애니메이션으로 만들면됩니다.

벡터 경로의 모양을 변경하려면 레이어의 path 속성을 사용하여 CGPath와 CGPath간에 애니메이션을 적용 할 수있는 새로운 CAShapeLayer를 살펴 보는 것이 좋습니다. Joe Ricioppo는이 here을 볼 수있는 몇 가지 샘플 코드를 제공합니다. 당신이 그 내용보다는 등의 위치, 크기, 회전, 내가 여러 모양이 있고 애니메이션을 적용 할 경우에 따라서

+0

등의 기본 속성을 업데이트 할 경우 그 너머

, 당신은 레이어를 다시 그리기해야합니다 개별적으로 (또는 그룹화 된) 모양은 각각의 CALayer에 있어야하며 각 CALayer에 애니메이션을 적용해야합니까? – Neigaard

+0

@Neigaard - 예, 좋습니다. 레이어를 합성하는 것은 다시 그리는 것보다 훨씬 빠릅니다. 예전 만화 애니메이터가 제한된 예산으로 쇼를 제작할 수 있도록 셀을 재사용하는 방법에 대해 생각해보십시오. Mac에서는 한 번에 수백 개의 레이어를 화면에 표시 할 수 있으며 원래 모델 iOS 기기에서도 30-60 FPS로 50 개의 애니메이션을 애니메이션으로 재생할 수 있습니다. –

관련 문제