CATransition和具体执行时间

时间:2013-02-05 19:52:06

标签: iphone ios objective-c quartz-core 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"];

}

此方法只需将 view1 切换为 view2 。我不明白的是,在将 view2 分配给 self.viewController之后, CATransition 被声明并添加到 window.layer .view 即可。动画为什么有效?

我确实设置了断点,并在showOtherView方法完成后发现切换动画。为什么?为什么 view2 不会立即出现在屏幕上!? (至少我第一次称这种方法)

1 个答案:

答案 0 :(得分:0)

绘制到屏幕是一项昂贵的操作,最后是Cocoa only does it once per spin of the run loop。设置控制器视图的效果 - 它放在屏幕上 - 直到此方法返回并且控制传递到运行循环后才会实际发生。因此,您将始终显示您对新视图所做的任何配置。