2009-05-12 4 views
3

정교한 애니메이션을 만들고 싶습니다. 그러나 나는 변화의 블록을 움직이는 방법을 알고 있습니다. 애니메이션을 체인화 할 수있는 방법이 있나요? 예를 들어 A -> B -> C -> D -> E -> F (기타 등등)를 변경할 수 있고 코어 애니메이션은 각 애니메이션이 끝날 때까지 대기하고 그런 다음 다음 단계로 진행됩니까?iPhone-OS에서 애니메이션을 어떻게 연결할 수 있습니까?

특히, 이것을하고 싶습니다. 큐브를 보여주는 UIImageView가 있습니다. 회전 원점이 좌측 하단에있는 동안

1 단계) 큐브 바닥

단계 2) 큐브가 약간 왼쪽으로 회전 평평하다.

3 단계) 회전 원점이 오른쪽 하단에있는 동안 큐브가 오른쪽에서 약간 오른쪽으로 회전합니다.

이 단계는 10 번 반복되고 단계 1에서 중지됩니다. 또한 흔들림은 시간이 갈수록 줄어 듭니다.

하나의 블록에서 하나의 변경을 애니메이션하는 방법을 알고 있지만 그 사이에 정교한 코드로 반복되는 것을 어떻게 할 수 있습니까? 시간이 지남에 따라 똑같은 것이 아닙니다. 그것은 흔들 리기가 멈출 때까지 점점 작아지기 때문에 바뀝니다.

답변

4

당신이 UIView의 애니메이션을 사용하는 가정은 ... 애니메이션이 (setAnimationDelegate 체크 아웃) 실제로 완료되면 호출되는 방법을 '정지'. 따라서 일련의 애니메이션을 대기열에 놓고 바로 이동할 수 있습니다. 델리게이트를 설정 한 다음 첫 번째 애니메이션을 시작합니다. 끝나면 setAnimationDidStopSelector 메서드를 호출합니다 (finished 플래그를 확인하여 실제로 완료되었는지 일시 중지되지 않았는지 확인하십시오). 애니메이션 대기열의 인덱스가 될 수있는 애니메이션 컨텍스트를 전달할 수도 있습니다. 카운터를 포함하는 데이터 구조 일 수도 있으므로 각주기를 통해 애니메이션 값을 조정할 수 있습니다.

그렇다면 다음 대기열에서 벗어난 다음 대기열이 시작될 때까지 대기하는 것입니다.

다른 유형의 애니메이션을 사용하는 경우 동일한 방법이 적용됩니다. 각각의 데이터 구조가 끝난 후에 수행 할 작업을 알 수 있도록 데이터 구조를 설정하기 만하면됩니다.

0

귀하의 질문에 대한 대답은 귀하가하고 싶은 것에 대해 더 많은 사양을 알아야한다는 것입니다. 당신은 분명히 명심해야 할 점이 있지만, 더 많은 세부 사항이 당신 자신의 질문에 대답하는 데 도움이 될 것입니다.

+0

감사합니다. 나는 몇 가지 세부 사항을 추가했다. – Thanks

1

애니메이션 블록 내부에 애니메이션 위임자를 설정해야합니다. 자세한 내용은 UIView 설명서의 setAnimationDelegate를 참조하십시오.

본질적으로 애니메이션이 끝날 때마다 위임자에게 알림을 보낼 수 있습니다. 컨텍스트 매개 변수를 사용하여 애니메이션의 현재 단계 (1 단계, 2 단계 등)를 결정하십시오.

이 전략을 사용하면 원하는만큼 많은 애니메이션 블록을 연결할 수 있습니다. 당신은 애니메이션을 제공 할 수

+0

문맥 힌트에 감사드립니다! 많이 도와 줬어! – Thanks

관련 문제