這是混亂與核心動畫公共點。 A CAAnimation
實際上並未更改圖層的後備「模型」屬性。它只是改變了圖層對用戶的顯示方式。所以你的toValue
從來沒有設置在你的圖層上,你需要自己做。您可以在動畫開始之前或之後執行此操作。您的新值將被設置,但用戶在動畫結束之前不會看到它。一個人爲的例子:
CABasicAnimation *rotate = [CABasicAnimation animationWithKeyPath:@"transform"];
rotate.fromValue = [NSValue valueWithCATransform3D:myLayer.transform];
rotate.toValue = [NSValue valueWithCATransform3D:CATransform3DRotate(myLayer.transform, M_PI, 0.f, 0.f, 1.f)];
rotate.duration = .5f;
myLayer.transform = CATransform3DRotate(myLayer.transform, M_PI, 0.f, 0.f, 1.f);
[myLayer addAnimation:rotate forKey:@"transform"];
兩個重要的部分是設置在該層上的性質和使用該屬性名作爲在addAnimation:forKey:
鍵。不要擔心隱式動畫。在內部,CALayer
將其所有動畫保存在以屬性名稱爲關鍵字的字典中,並且當您添加新動畫時,它將取消並替換指定鍵/屬性的任何現有動畫。
此外,我不能告訴你是否需要滑動手勢的幫助,但如果你還沒有,你應該檢查出UIPanGestureRecognizer
。它提供了一個方便的方法,它將爲您提供一個以每秒點數表示的平移方向的二維矢量。我有一些gesture recognizer sample code up on github可能會有所幫助。
這是你在那裏創建的一個令人敬畏的微調。 :) – 2011-01-05 17:04:45