2013-02-05 5 views
0

봐 :CATransition 및 특정 실행 시간 (AppDelegate에있는)이 샘플 코드에서

- (void)showOtherView { 
if (self.viewController.view == view1) { 
    self.viewController.view = view2; 
} else { 
    self.viewController.view = view1; 
} 
CATransition *animation = [CATransition animation]; 
[animation setType:kCATransitionMoveIn]; 
[animation setSubtype:kCATransitionFromRight]; 
[animation setDuration:0.5]; 
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; 
[[self.window layer] addAnimation:animation forKey:@"myKey"]; 

}

이 방법은 단순히 뷰 1뷰 2 전환됩니다. 내가 이해하지 못하는 것은 CATransition 선언하고 뷰 2를self.viewController.view를 할당 한 후 window.layer 에 추가되어있다. 왜 애니메이션이 작동합니까?

중단 점을 설정하고 showOtherView 메서드가 완료된 후 전환이 움직이는 것으로 파악했습니다. 왜? 그냥 보기 2 화면에 즉시 나타나지 않는 이유는 무엇입니까? (적어도이 메소드를 호출하는 경우)

답변

0

화면에 그리는 작업은 값 비싼 작업이며, 마지막에는 Cocoa only does it once per spin of the run loop입니다. 컨트롤러의 뷰 설정 (화면에 표시되는)의 효과는이 메서드가 반환되고 컨트롤이 실행 루프로 넘어갈 때까지 실제로 발생하지 않습니다. 따라서 새로운보기로 어떤 구성을 하든지 항상 표시됩니다.