2011-01-10 2 views
1

CALayer를 특정 각도로 회전하려고 시도하지만 애니메이션이 완료되면 레이어가 원래 위치로 다시 이동합니다. 레이어를 올바르게 회전시켜 최종 대상에 머물게하려면 어떻게해야합니까? 여기 최종 위치에서 CALayer를 영구적으로 회전시키는 방법은 무엇입니까?

내가

CABasicAnimation *rotationAnimation =[CABasicAnimation animationWithKeyPath:@"transform.rotation.z"]; //Rotate about z-axis 
[rotationAnimation setFromValue:[NSNumber numberWithFloat:fromDegree]]; 
[rotationAnimation setToValue:[NSNumber numberWithFloat:toDegree]]; 
[rotationAnimation setDuration:0.2]; 
[rotationAnimation setRemovedOnCompletion:YES]; 
[rotationAnimation setFillMode:kCAFillModeForwards]; 

어떤 제안을 사용하고있는 코드? 고맙습니다.

답변

2

좋아요. removeOnCompletion을 NO로 설정하여 문제를 해결했습니다.

[rotationAnimation setRemovedOnCompletion:NO]; 
+0

Anonymous 편집자는 "이것은 정답이 아닙니다. 최종 값을 '고정'하는 적절한 방법은 레이어의 변형 속성을 애니메이션의 최종 값으로 설정하는 것입니다." (편집 검토에서 의견을 말하기 때문에 투표를 거절했는데 올바른지 여부에 대해서는 의견이 없습니다) – geoffspear

+0

rotationAnimation.fillMode = kCAFillModeForwards; 너무 일한다. –

2

애니메이션을 추가하고 있지만 실제 기본 속성은 수정하지 않습니다. 애니메이션을 만든 후에는 동일한 최종 결과를 포함하도록 레이어의 transform 속성을 설정하기 만하면됩니다.