2012-01-14 5 views
6

보기가 애니메이션으로 표시되는지 감지하는 방법을 찾으려고합니다.iOS에서 실행중인 애니메이션을 감지하는 방법이 있습니까?

사례 : 성능을 위해 shadowPath를 지정하여보기 레이어에 그림자를 적용했습니다. 보기의 크기가 조정되면 그림자가 따라 움직여야합니다. 뷰의 프레임을 관찰하고 이에 따라 레이어의 shadowPath를 변경할 수 있습니다. 그러나보기의 크기가 조정되는 동안 변경 사항이 애니메이션으로 적용되지 않으므로 그림자가 앞으로 이동합니다.

CABasicAnimation을 사용하여 shadowPath를 애니메이션하는 방법을 알고 있지만 계속 애니메이션의 속성을 알아야 애니메이션 애니메이션에도 적용 할 수 있습니다 (주로 : 지속 시간, 여유).

이것은 프레임 워크 유형의 구성 요소이므로 미리 기간 및 여유 속성을 알고 있다고 가정 할 수 없습니다.

프레임을 관찰 할 때 시작/실행 애니메이션을 감지하는 방법이 있습니까?

답변

12

당신은 내가 가장 좋은 방법은해야한다고 생각

NSArray* keys = [yourView.layer animationKeys]; 
+0

아하. 감사! – Inferis

0

전화, 일부 애니메이션이 모든 키를 얻을 수

[yourView.layer animationForKey:@"key"] 

를 호출하여이 열쇠 알고있는 특정 뷰의 레이어에 연결된 모든 애니메이션을 검색 할 수 있습니다 ...

UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.7]; 
[UIView setAnimationBeginsFromCurrentState:YES]; 

.....your code 
// Set animation did stop selector before committing the animations 

[UIView setAnimationDidStopSelector:@selector(animationFinished:)]; 

[UIView commitAnimations]; 
관련 문제