SuperAPI AI 工具集

axiom-uikit-animation-debugging

设计与创作

查看项目

更新于 10-15 20:11

技能介绍

用途:针对 CAAnimation 常见故障提供系统化排查思路,核心观点是九成问题来自 CATransaction 时序、layer 状态或帧率假设,而非 Core Animation 缺陷。

主要能力:

  • 列出可疑信号:完成回调仅在模拟器触发、声明时长与实际不符、弹簧动画在新旧机型表现不一致、手势与动画叠加卡顿等。
  • 给出强制首步诊断:打印完成回调是否触发、对比声明与实际时长、列出 layer.animationKeys() 的动画及其 duration 与 isRemovedOnCompletion、检查 layer.speed 与 layer.timeOffset。
  • 提供决策树,按完成回调是否触发、时长是否错位、弹簧物理是否异常、手势是否卡顿分派到七种模式。
  • 模式包括:完成回调必须在 add() 之前设置;CATransaction.setAnimationDuration() 会覆盖块内全部动画时长;isRemovedOnCompletion=false 配合 fillMode=.forwards 保留最终状态;完成回调必须使用 [weak self] 并用 guard 解包;同一 keyPath 动画需先 removeAnimation 或使用唯一 key;手势与动画用 CADisplayLink 同步;弹簧参数按设备性能类别而非机型适配。

使用方式:先运行强制诊断,只识别一个根因,再按顺序一次只应用一个模式,并用打印或日志验证;改动后在真机验证,模拟器只跑 60Hz,可能掩盖问题。

适用场景:iOS/UIKit 项目中 CAAnimation 与手势动画的时序、状态保持、性能排查。

限制:仅在真机(最旧支持机型)验证才算有效;完成回调必须弱引用 self,否则形成保留环;禁止硬编码时长或设备值、禁止用 asyncAfter 兜底;无法用诊断确认时需用 Instruments 的 Core Animation 工具分析,该步骤耗时约 30 至 60 分钟,资料提及为边缘情况。具体平台版本、代码细节和支持范围暂未提供。