【发布时间】:2011-02-15 12:03:25
【问题描述】:
我正在测试我的 iPhone 应用程序的性能:
// using CATransaction like this goes from 14fps to 19fps
[CATransaction begin];
[CATransaction setDisableActions: YES];
// NEG, as coord system is flipped/messed up
self.transform = CGAffineTransformMakeRotation(-thetaWheel);
[CATransaction commit];
问题:为什么禁用核心动画在新旧变换矩阵之间进行插值的默认行为会提高性能?
他们可能会做哪些计算量如此之大的事情?即使他们使用世界上最精细的技术在两个矩阵之间进行插值,我也不敢相信这会达到 5fps?!
我无法想象这个过程除了 M_resultant = k*M_last + (1.-k)*M_target
【问题讨论】:
-
这不仅仅是两个矩阵的线性混合。考虑一下如果你在恒等变换和 180° 旋转之间制作动画,Core Animation 会做什么——你会得到一个不改变比例的旋转,而线性混合会让你在中途留下零矩阵。
标签: performance matrix core-animation interpolation catransaction