我正在使用模态转换从一个 XIB 转换到另一个,除了一件事之外,我已经完成了所有工作:在转换开始的那一刻,我在前一个视图上所做的所有运动动画都被还原.
这是我正在使用的方法:
- (IBAction)chooseInsight:(id)sender {
[CATransaction setCompletionBlock:^{
ContainerViewController *insight = [[ContainerViewController alloc] init];
insight.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentViewController:insight animated:YES completion:nil];
}];
[self animateExit];
}
该animateExit
方法为几个 UI 对象设置了 1 秒的帧移动动画,从而产生所有内容都飞离屏幕并留下纯色背景的效果。我希望这个纯色背景会融入下一个视图,ContainerViewController
.
但发生的情况是 UI 对象飞离屏幕,我们看到纯色背景,然后突然所有按钮和标签都弹回,因此它们可以融入ContainerViewController
.
为什么会这样?是否缓存了前一个视图的图像以帮助动画?如果是这样,我可以在转换之前刷新缓存吗?或者如果没有,我该怎么做才能使这种溶解顺利进行?
编辑:如果它是相关的,我CATransaction
从这个答案中得到了一点关于如何延迟到动画结束的信息。我的脑海里有一个声音说,也许这两个动画是问题的根源,但我对 iOS 动画还不够熟悉,无法弄清楚如何......