gpt4 book ai didi

iphone - CATransiton 闪烁带背景动画

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

我正在使用 CATransitionCALayer 进出 UIView(UIView不是全屏。)新图层从右侧进入,旧图层从左侧离开。 CAlayer 的内容属性设置为 CGImageRef。这是我认为相关的代码:

CATransition *transition = [CATransition animation];

transition.duration = transitionTime;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];

transition.type = kCATransitionPush;
transition.subtype = kCATransitionFromRight;

transition.delegate = self;
[view.layer addAnimation:transition forKey:nil];

// onDeck is the layer stage-right and is about to enter
[view.layer addSublayer:onDeck];

// onStage is the layer currently in the middle of the view and is exiting
if (onStage)
[onStage removeFromSuperlayer];

这个动画发生时,有 1 秒的暂停,然后一个新的图像以动画形式出现,等等。这在模拟器中工作得很好,但在我的第二代 iPod Touch 上,动画中偶尔会出现卡顿。具体来说,动画层将在当前显示层的顶部闪烁。这些闪烁并不一致,但很明显。

我已经缩小到可能的罪魁祸首是我在这个转换背后进行的背景动画。背景中有几十个 CAlayer 在全屏 View 中飞进飞出。当我删除这些背景动画或将过渡的动画持续时间设置为更长的持续时间(2 秒以上)时,动画效果良好(我希望动画时间为 0.75 秒。)

我的第一个想法(这似乎得到了上述观察的支持)是我过于努力地插入 CoreAnimation(至少对于我的 iPod)并且需要妥协。为什么我难以接受这一点,因为除了偶尔的闪烁之外,场景渲染得非常好(几乎没有延迟)。

如果有人对这个问题或一般的 CoreAnimation 优化有任何意见,我将非常感激!

感谢您的阅读

更新:

有机会在 iPhone 4 上对此进行测试,并且从未发生过闪烁。此外,CoreAnimation 工具证实,在我的第二代 iPod Touch 上,我的 FPS 始终达到 40 秒高至 50 秒中低/中。

最佳答案

猜测一下:您尝试过管理您的 CATransactions 吗?

您可以尝试将您对场景的修改括起来,如下所示:

[ CATransaction begin ]
... your animations ...
[ CATransaction commit ] ;

关于iphone - CATransiton 闪烁带背景动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5988733/

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