このサンプル コードを見てください (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がすぐに画面に表示されないのですか!? (少なくとも初めてこのメソッドを呼び出します)