2013-02-05 19 views
0

看此示例代碼(在AppDelegate中):CATransition和具體執行時間

- (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"]; 

}

此方法簡單地切換廠景視圖2。我不明白的事情是,那CATransition聲明和分配視圖2self.viewController.view後加入window.layer。爲什麼動畫的作品?

我確實設置了斷點並指出showOtherView方法完成後切換動畫。爲什麼?爲什麼view2不會立即出現在屏幕上!? (至少我第一次稱這種方法爲)

回答

0

畫到屏幕是一個昂貴的操作,最後是Cocoa only does it once per spin of the run loop。設置控制器視圖的效果 - 它放在屏幕上 - 實際上並沒有發生,直到這個方法返回並且控制權交給運行循環。因此,無論您對新視圖做出什麼樣的配置,都會顯示出來。