현재 두 개의 다른 상태로 작은 버튼을 만들고 있습니다. 모든 상태는 두 개의 CAShapeLayer
으로 표현되며 상태 간 전환은 일련의 CAKeyframeAnimation
/CABasicAnimation
으로 애니메이션되며 모든 모양 레이어의 경로 속성이 변경됩니다. 내 질문은 현재 애니메이션 (즉, 버튼을 움직이는 동안 누른 상태)에서 시작하여 상태로 애니메이션을 적용하는 방법입니다.CAKeyframeAnimation에서 현재 애니메이션 단계를 얻는 방법
일반적으로 프리젠 테이션 레이어에 현재 속성 값을 요청하고 추가 애니메이션 (완벽하게 설명 된대로 here)을 사용합니다. 그러나이 애니메이션은 다중 단계 애니메이션이므로 현재 어떤 애니메이션을 적용하고 있는지 파악해야합니다 그런 다음 해당 애니메이션을 이전 상태로 되돌릴 수 있도록 연결합니다. 하지만 그것은 다소 까다 롭습니다. (모든 애니메이션을 removeOnCompletion=false
으로 만들고 애니메이션의 시간 오프셋을 쿼리하여 현재 활성화 된 애니메이션과 현재까지의 애니메이션을 파악할 수 있습니다.)
불행히도 레이어 속도를 0.0으로 설정하고 반대 방향으로 다르게 동작하는 보조 애니메이션이 있기 때문에 timeOffset
을 앞뒤로 움직이게해도 효과가 없습니다.
모양 레이어에 사용자 지정 레이어 속성을 사용하는 것이 번거로울 것 같지만 현재 애니메이션 단계와 더 쉽게 진행 속성을 일치시킬 수 있습니다.