2009-08-26 12 views
12

Cocoa Touch에서 애니메이션이 어떻게 작동하는지 궁금합니다. 예를 들면 :[UIView beginAnimations]는 어떻게 작동합니까?

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:1.0]; 

view1.alpha = 1.0; 
view2.frame.origin.x += 100; 

[UIView commitAnimations]; 

어떻게 UIView이 두 개의 뷰의 속성에 대한 변경 사항을 추적합니까?

KVO가 사용 된 것으로 의심 되나 beginAnimationscommitAnimations 통화 사이의 모든보기에 대한 변경 사항을 실제로 관찰합니까?

통찰력을 얻으실 수 있습니다!

답변

12

단순화 된 설명 : 모든 뷰에 대한

모든 애니메이션을 하나의 스택에 처리가 beginAnimations:context:는 스택에 새로운 활성 CAAnimationGroup를 밀어 것이며, commitAnimations는 현재 활성 애니메이션 그룹이 나타납니다.

스택에 활성 애니메이션 그룹이있는 경우 애니메이션 가능한 속성의 모든 설정자는 CAAnimation 하위 클래스 인스턴스를 만들어 해당 속성을 처리하고 활성 애니메이션 그룹에 추가합니다.

마지막 애니메이션이 팝되면 재생됩니다.

0

이전 CoreAnimation 호출에 대한 래퍼 일뿐입니다. CoreGraphics API를 살펴보면 사전에 설정해야하는 키가 여러 개 있으며 키의 시작과 끝 값을 제공한다는 것을 알 수 있습니다.