用途:面向 UIKit 中 CAAnimation 的调试,处理完成回调不触发、声明时长与实际视觉时长不一致、弹簧物理在真机上表现异常、手势与动画叠加卡顿等问题。核心观点是多数问题源于 CATransaction 时序、图层状态或帧率假设,而非 Core Animation 本身缺陷。
主要能力:提供红旗信号清单(模拟器正常真机异常、时长不匹配、旧设备卡顿等);给出强制首步诊断代码,用于确认完成回调是否触发、实际耗时与声明时长对比、当前活动动画列表、layer.speed 与 timeOffset;提供决策树按症状分支;给出七种修复模式:完成回调设置顺序、CATransaction 覆盖时长、isRemovedOnCompletion 与 fillMode、完成回调中的 weak self、同一 keyPath 多动画冲突、CADisplayLink 同步手势与动画、弹簧动画按设备性能分级适配。
使用方式:先运行诊断代码并记录输出,依据输出定位唯一根因,再按顺序一次只套用一种模式,最后在真机(最旧支持机型)验证。禁止硬编码时长或数值来“对齐实际表现”,禁止用 asyncAfter 兜底,禁止在完成回调中使用强引用 self。
适用场景:iOS/UIKit 动画调试与性能排查。
限制:资料未提供具体安装命令、依赖或平台版本要求;模拟器与真机帧率差异、Instruments 性能分析等需自行具备环境。若诊断结果矛盾,应先补充日志或使用 Instruments 的 Core Animation 工具,而非继续猜测。