2011-12-31 89 views
0

我已經制作了一個應用程序,它使用UIBezierPath繪製大量曲線。現在我試圖在其中實現修改功能。爲了修改特定曲線,我可以做的一件事是再次繪製所有的曲線;我還沒有實現這一點。但我認爲這種算法在曲線數量增加時效率不高,因爲我必須將所有點存儲在數組中,並且每次修改時都必須運行for循環來繪製每條曲線。我應該使用哪種算法來更改/修改曲線

我在尋找更高效的算法。如果有人可以提供示例代碼,這將會很有幫助。

回答

0

可以表示單獨的曲線,UIBezierPath秒和通過創建每一個曲線和CAShapeLayer分配形狀層的path屬性到貝塞爾路徑的相應的屬性CGPath分別繪製它們。要更新單個曲線,您只需要操作一個貝塞爾路徑和相應的形狀圖層path屬性。

+0

我明白了。您有任何指向教程或示例代碼的鏈接嗎?這將會更有幫助。 – Harsh 2012-01-02 04:55:52

+0

你可能會看看http://nachbaur.com/blog/core-animation-part-4和Google。 – MrMage 2012-01-02 15:18:34

+0

我使用CAShapeLayer實現。雖然修改我不能刪除舊的路徑。 Anothe問題是我無法從UIView中抓取CAShapeLayer。這就像一旦你繪製並放在UIView上,你就不能改變它的內容。相反,你必須做一個新的CAShapeLayer.Any想法? – Harsh 2012-01-03 10:56:01

0

重新繪製曲線,直到出現儀器測量出的性能問題。如果再次出現這種情況,請使用儀器查明最佳優化方法。

很容易讓人花時間在不需要的優化上。最初,將時間放在一邊並考慮創建一個「乾淨的」代碼會好得多。

+0

我正在尋找另一種不太麻煩的算法。我需要關於CGPath內置屬性的想法,這些我都不知道,並且可能對我實現我的功能很有用。 – Harsh 2011-12-31 13:22:02

+0

隨着你的問題很難提供幫助,不知道你期望做什麼樣的改變或有多少點(10或10000)。我正在繪製超過100分的曲線,通過跟蹤手指移動進行更新,並且沒有察覺到重繪時間問題。 – zaph 2011-12-31 13:30:11

+0

主要問題是我繪製了多條曲線,並且比我加入了它們。我想改變特定曲線而不影響其他曲線。要做到這一點,我可以做的一件事是重繪所有的曲線。當你重繪曲線時你到底做了什麼? – Harsh 2011-12-31 13:35:59

相關問題