我在視圖之間創建了自己的過渡動畫。我爲兩個屬性(位置和變換)設置動畫,以在視圖之間提供類似立方體的過渡。該框架使用CABasicAnimation
,而轉換使用「2階段」CAKeyframeAnimation
。一切工作正常,除了一個小細節,我似乎無法弄清楚。在我的轉換中,我在中間關鍵幀上應用CATransform3DScale
以創建放大/縮小效果。這工作正常,除了動畫看起來有點生澀。它以線性方式在關鍵幀之間進行動畫處理,並且我想將其解決。現在CAKeyframeAnimation
有一種方法可以使用calculationMode
來實現,但它似乎不適用於轉換。我嘗試將其設置爲kCAAnimationCubic
和kCAAnimationCubicPaced
,但沒有任何效果。用於CATransform3D動畫的CAKeyframeAnimation上的平滑動畫
下面是動畫一個視圖的變換代碼(一個類似的代碼塊動畫其它視圖):
CAKeyframeAnimation *aTransform = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
CATransform3D transform1 = RotateOnX(toView, M_PI_4);
transform1 = CATransform3DScale(transform1, RotationalZoom, RotationalZoom, RotationalZoom);
[aTransform setValues:Array([NSValue valueWithCATransform3D:RotateOnX(toView, M_PI_2)],
[NSValue valueWithCATransform3D:transform1],
[NSValue valueWithCATransform3D:RotateOnX(toView, 0)])];
[toView.layer addAnimation:aTransform forKey:@"transform"];
注:RotateOnX(UIView *, CGFloat)
是用於返回一個視圖的變換塊由X上旋轉所需的弧度。
正如你所看到的,我只對中間關鍵幀設置了縮放轉換。此外,視圖的旋轉非常平滑,只是縮放似乎在改變方向時「猛拉」。
有沒有人有關於如何平滑縮放/縮放的任何想法?
添加多個關鍵幀? – 2012-07-20 21:46:35