gpt4 book ai didi

iphone - CATransition 显示动画开始之前过渡结束时的单个帧

转载 作者:行者123 更新时间:2023-12-03 20:17:17 27 4
gpt4 key购买 nike

我正在使用一些最初取自 Apple 示例 ViewTransitions 的代码来相互交换两个 View 。

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

当我的转场在设备上执行时,我有时会得到转场动画最后一帧的单帧闪烁,然后动画播放流畅。这会给第二个 View 带来非常刺耳的效果,在平滑的动画执行之前,它会闪烁然后再次闪烁。

我的示例和 Apple 示例之间的主要区别是我的 View 不是全屏,我有一个包含两个 subview 的容器 UIView,并且我将动画应用到容器层而不是 Root View 层。但我看不出这应该有多大区别。

此问题在模拟器中根本不会发生,并且在设备上是间歇性的(大约 60-70% 的时间)。有其他人看到这种行为吗?如果是,您是如何解决这个问题的?

更新了更多信息:该代码最初是多部分动画的一部分,但我将其移至由按钮触发以隔离问题。这两种情况都会出现此问题。

动画委托(delegate)已实现,但已被删除以尝试隔离问题。

动画期间 View 没有变化,实际上正在调用[container setUserInteractionEnabled:NO](但在禁用用户交互的情况下也会发生问题)。

我尝试使用 setStartProgresssetEndProgress 从过渡中间开始动画并在结束之前结束,问题仍然存在。

我也尝试过减慢动画持续时间,但没有效果。

最佳答案

要开始回答您的问题,需要更多信息 - 例如,您如何调用该代码(例如,它是否作为操作绑定(bind)到按钮,或者是否以某种方式自动触发),您是否实现了委托(delegate)方法来启动并停止动画(以及其中包含的内容),您的 View 在动画过程中的某个时刻是否发生变化?模拟器和设备之间的计时将关闭 - 您不应依赖模拟器来测试动画,因为一切都会发生得更快。

关于iphone - CATransition 显示动画开始之前过渡结束时的单个帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/262508/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com