Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone CATTransition和特定执行时间_Iphone_Ios_Objective C_Quartz Core_Catransition - Fatal编程技术网

Iphone CATTransition和特定执行时间

Iphone CATTransition和特定执行时间,iphone,ios,objective-c,quartz-core,catransition,Iphone,Ios,Objective C,Quartz Core,Catransition,查看以下示例代码(在AppDelegate中): } 此方法只需将view1切换到view2。我不明白的是,在将view2分配给self.viewController.view之后,cattransition被声明并添加到window.layer。为什么动画可以工作 我确实设置了断点,并发现在showOtherView方法完成后切换动画。为什么?为什么view2不会立即出现在屏幕上!?(至少这是我第一次调用此方法)绘制屏幕是一项昂贵的操作,而且,最终。设置控制器视图的效果——它被放在屏幕上——直

查看以下示例代码(在AppDelegate中):

}

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


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

绘制屏幕是一项昂贵的操作,而且,最终。设置控制器视图的效果——它被放在屏幕上——直到此方法返回并且控制传递到运行循环之后才真正发生。因此,您对新视图所做的任何配置都将始终显示出来

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