gpt4 book ai didi

iphone - 对 CALayer 属性动画并发数量的合理预期?

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

我使用 UIView 动画 block 在显示屏上的多个层上同时为 CALayer 属性(本例中为背景颜色)设置动画。

所有图层都是不透明的,我在一个 block 中对所有内容进行动画处理,基本上像这样

[UIView beginAnimations:@"outer" context:nil];
float duration = .25;
float offset = 0.0;
for( NSArray *viewsInPass in viewQueue ) {
for( UIView *innerView in viewInPass ) {
[UIView beginAnimations:@"inner" context:nil];
[UIView setAnimationDelay:offset];
[UIView setAnimationDuration:duration];
[innerView.layer setBackgroundColor:[newColor CGColog]];
[UIView commitAnimations];
}
offset += duration;
}
[UIView commitAnimations];

一旦有 4-5 个并发层动画其背景颜色,它就会变得非常不稳定,并且设备基本上开始完全失去其渲染速率,并且只是卡住到剩余动画的末尾。所有 View 都不重叠,并且都是不透明的,通常约为 20x20 像素。

我对它的性能如此糟糕感到有点震惊,特别是在阅读了很多关于 Quartz 2D 等令人欣喜的事情之后。我觉得我一定在这里错过了一些基本的东西!

救命!

最佳答案

View 中的不透明性是对性能影响最大的一个 - 如果您可以在整个渲染过程中防止它们重叠和完全不透明(即 View 序列中的任何地方都没有透明度,包括背景),您会得到稍微好一点的效果性能。

我设法以约 30 fps(即整个屏幕)的速度获得单个大型动画,但遇到了内存限制(原始 iPhone/iPod),最终超出了我的预期。如果您想要的不仅仅是您所获得的内容,您需要进入 OpenGL 领域 - 通过游戏框架或直接进入。在该循环中调用 Objective-C 来在循环图像的同时更改偏移量的开销最终会害死你。

关于iphone - 对 CALayer 属性动画并发数量的合理预期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3233696/

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