我正在使用一些最初取自 Apple 示例 ViewTransitions 的代码来交换两个视图。
CATransition *animation = [CATransition animation];
[animation setDelegate:self];
[animation setType:kCATransitionFade];
[animation setDuration:0.3f];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]];
[[container layer] addAnimation:animation forKey:@"swap"];
当我的过渡在设备上执行时,有时我会得到过渡动画最后一帧的单帧闪光,然后动画会流畅播放。这给第二个视图带来了非常不和谐的效果,在平滑动画执行之前它会闪烁然后再次闪烁。
我的示例和 Apple 示例之间的主要区别在于我的视图不是全屏的,我有一个包含两个子视图的容器 UIView,并且我将动画应用到容器层而不是根视图层。我看不出这应该有很大的不同。
此问题在模拟器中根本不会发生,并且在设备上是间歇性的(大约 60-70% 的时间)。是否有其他人看到这种行为,如果有,您是如何解决的?
更新了更多信息: 代码最初是多部分动画的一部分,但我将其移动为由按钮触发以隔离问题。在这两种情况下都会出现此问题。
动画代表已实现,但已被删除以尝试隔离问题。
在动画期间视图没有改变,实际上[container setUserInteractionEnabled:NO]
正在被调用(但问题也发生在没有禁用用户交互的情况下)。
我尝试从过渡中间开始动画并在结束之前使用setStartProgress
and结束setEndProgress
,问题仍然存在。
我也尝试过减慢动画持续时间,但没有任何效果。