我为 Leopard 构建了一个使用核心动画的屏幕保护程序。它不会做任何过于复杂的事情;使用 CALayers 和 CATextLayers 树生成以下结构的数据“表”:
- root
› maincontainer
› subcontainer
› row [multiple]
› cell [multiple]
› text layer
任何时候屏幕上最多渲染 50 个 CALayer。
一旦我建立了“表”,我将使用 CABasicAnimation 添加动画“子容器”到视图中。同样,我没有做任何花哨的事情——只是一个简单的淡入。
问题是,虽然动画确实发生了,但观看起来很痛苦。在我的开发机器上,它是一个 3.06Ghz iMac,具有 4GB 的 RAM,并且似乎将动画分成 10 个步骤而不是显示渐变。
在屏幕保护程序的目标 ppc mac-mini 上情况变得更糟;它甚至拒绝播放动画,通常从动画开始(0%不透明度)到中途(50%)然后完成“补间”。
我对 ObjectiveC 比较陌生,我的经验是基于使用垃圾收集环境,但我不敢相信我在屏幕保护程序开始导致此类问题时泄漏了足够的内存。
另外,我很确定这不是硬件问题。我已经测试了使用核心动画的内置屏幕保护程序,并下载了一些免费的基于 CA 进行比较,它们在两台机器上都可以正常运行。
关于在屏幕保护程序中使用 CA 或在一般情况下使用 CA 的信息在 Google 上非常少,而且关于配置/麻烦屏幕保护程序的建议/教程似乎不存在。因此,社区可以提供的任何帮助都将受到欢迎!
- - 更新 - -
似乎隐式动画有助于使事情变得更平滑。仍然有点生涩,但没有像我的解决方案那样尝试使用显式动画为所有内容设置动画那么糟糕。