2012-11-14 69 views
5

我有一個圖層將從U點移動到UIBezierPath上的B點。 我發現很多樣本是指CAAnimation和UIBezierPath。 但我需要將我的圖層僅從指定點移動到貝塞爾路徑上的另一個點。通過UIBezierPath移動CALayer

enter image description here

任何建議,將不勝感激。

感謝

+0

爲什麼不只是找出路徑段並使用它作爲動畫路徑 –

+0

看到這個答案:http://stackoverflow.com/questions/1142727/how-can-i-animate-the-movement-沿着一個彎曲的路徑的視圖或圖像 – buildsucceeded

回答

1

我一直希望做這樣的事情,並發現那位本教程,它展示瞭如何按照特定的路徑。它的工作原理與汽車(一CALayer的)和UIBezierpath的賽道和解決順序:

定義的車應該走的道路(在這種情況下,你BezierPath) 畫黑線定義軌道; (N/A) 繪製軌道的白色虛線中心線; (N/A) 創建定義汽車的圖層; (你的圖層) 沿路徑動畫汽車。

你可以在這裏查看基準柱(什麼你問!): http://nachbaur.com/2011/01/07/core-animation-part-4/

你也可以在這裏下載源代碼: http://cdn5.nachbaur.com/wp-content/uploads/2011/01/CALayerAnimTest.zip?25881d

希望這有助於!

關注,

豪爾赫。

+0

感謝您的回答,但那不是我要找的。我期望在貝塞爾路徑中的兩點之間移動。不完整的路徑。 – fyasar

+0

雖然這可能在理論上回答這個問題,[這將是更可取的](/ meta.stackoverflow.com/q/8259)在這裏包括答案的基本部分,並提供鏈接供參考。請修改您的答案以更正此問題,然後標記您的帖子以請求取消刪除 – Matt

2

如果你的bezier路徑是一個圓或半個圓,你可以跳過路徑,而是將該點添加到一個更大的方形圖層。將該點設置爲距較大方形圖層中心的固定距離。然後,您可以旋轉z軸上圍繞中心的較大圖層,無論需要移動多少度數。似乎它會簡化一些事情,儘管我不確定你到底需要做些什麼。

3

希望這會有所幫助。

UIBezierPath *trackPath = [UIBezierPath bezierPath]; 
. 
. 
. 
CAKeyframeAnimation *anim = [CAKeyframeAnimation animationWithKeyPath:@"position"]; 
anim.path = trackPath.CGPath; 
anim.repeatCount = 1; 
anim.duration = 2.0; 
[layerToAnimate addAnimation:anim forKey:@"pathGuide"];