查看此示例代码(在 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。我不明白的是,CATransition在将view2分配给self.viewController.view之后被声明并添加到window.layer。为什么动画有效?
我确实设置了断点并发现在 showOtherView 方法完成后切换动画。为什么?只是为什么view2没有立即出现在屏幕上!?(至少我第一次调用这个方法)