2013-03-24 66 views
0

我使用的是CAShapeLayer來顯示隨着用戶在屏幕上跟蹤他/她的手指而更新的路徑。我想將此路徑轉換爲包含路徑的矩形。我可以計算矩形就好了;棘手的部分是動畫轉換。將任意形狀的CGPath動畫化爲矩形

文檔說這大約動畫的CAShapeLayerpath屬性:

如果兩個路徑具有不同數量的控制點或線段的結果是不確定的。

那麼我該如何去增加更多的控制點到矩形CGPath?還是有更好的方法來實現這個動畫?謝謝。 =)

回答

1

我認爲你必須手動構建一系列矩形形式的線。迭代路徑中的元素,計算要將該點轉換爲的邊界矩形的位置,並將該段添加到新的矩形路徑。您可能必須使用相同類型的元素(例如恰好形成直線的三次或二次Bézier曲線),以便控制點的數量相匹配。

動畫完成後,如果需要,可以將路徑重置爲純矩形。

+0

謝謝!我如何「計算你想要轉換到的邊界矩形上的哪個位置」? – fumoboy007 2013-03-24 18:37:22

+1

這是一個設計選擇。您可以將任何給定的點水平或垂直翻譯到最近的邊緣。您可以沿徑向將每個點從中心移開,直到它與邊緣相交。您可以簡單地計算路徑的元素,並將假設的矩形大致等分爲相同數量的節,並將每個元素映射到節。等你的選擇將會影響路徑的動畫。換句話說,沒有一種方法可以逐漸將任意路徑轉換爲矩形。 – 2013-03-25 02:33:48