Objective c CATTransferM3D动画的CAKeyframeAnimation上的平滑动画

Objective c CATTransferM3D动画的CAKeyframeAnimation上的平滑动画,objective-c,ios,core-animation,catransform3d,Objective C,Ios,Core Animation,Catransform3d,我已经在视图之间创建了自己的过渡动画。我设置了两个属性(位置和变换)的动画,以在视图之间提供类似立方体的过渡。帧使用CABasicAnimation,而变换使用“两阶段”CAKeyframeAnimation。一切都很好,除了一个小细节我似乎弄不清楚。在我的转换中,我在中间关键帧上应用了一个CATTransform3DScale,以创建放大/缩小效果。这很好,只是动画看起来有点不稳定。它以线性的方式在关键帧之间设置动画,我想平滑它。现在,CAKeyframeAnimation有了一种使用calc

我已经在视图之间创建了自己的过渡动画。我设置了两个属性(位置和变换)的动画,以在视图之间提供类似立方体的过渡。帧使用
CABasicAnimation
,而变换使用“两阶段”
CAKeyframeAnimation
。一切都很好,除了一个小细节我似乎弄不清楚。在我的转换中,我在中间关键帧上应用了一个
CATTransform3DScale
,以创建放大/缩小效果。这很好,只是动画看起来有点不稳定。它以线性的方式在关键帧之间设置动画,我想平滑它。现在,
CAKeyframeAnimation
有了一种使用
calculationMode
的方法,但它似乎不适用于变换。我尝试将其设置为
kCAAnimationCubic
kcaanimationcubicpaed
,但没有效果

以下是为一个视图的变换设置动画的代码(为另一个视图设置动画的类似代码块):

注意:
RotateOnX(UIView*,CGFloat)
是一个块,用于返回在X上旋转所需弧度的视图的变换

如您所见,我仅在中间关键帧上设置缩放变换。此外,视图的旋转非常平滑,只有缩放在改变方向时出现“抖动”


有人对如何平滑缩放/缩放有什么想法吗

尝试
计时函数
属性。由于有3个关键帧,因此需要2个计时功能:一个用于从关键帧0到关键帧1的动画,另一个用于从关键帧1到关键帧2的动画

aTransform.timingFunctions = [NSArray arrayWithObjects:
    [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInOut],
    [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInOut],
    nil];

对不起,我不清楚…我用了一个“框架”来捕捉所有的边界、主播点和位置。事实上,我只对位置和修改的锚定点设置动画,以“移动”我的视图。我会更新我的问题来澄清。哦,天哪,哇……我完全错过了,我在6个小时内至少看了10遍那些课堂文档……啊。它工作得很好。说真的,谢谢你!哦,仅供参考-先放松再放松时效果更好:
[NSArray Array With Objects:[Camediatiming Function With Name:KCAMediaming Functions easeout],[Camediaming FunctionWith Name:KCAMediaming Functions easeout],[Camediaming FunctionWith Name:KCAMediaming Functions in],无
aTransform.timingFunctions = [NSArray arrayWithObjects:
    [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInOut],
    [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInOut],
    nil];