2010-10-15 82 views
3

我有一堆相同的CALayers,我想重用。通常,其中一些應該消失,然後在同一個超級玩家的另一個位置(半秒鐘左右)重用。如何存儲CALayers以供重用?

保持它們在屏幕上消失的最佳方式(性能方面)是什麼? setHidden:YES,或setOpacity:0,或removeFromSuperLayer?或者我沒有想到的其他東西?

(大約有12個相同的圓形CALayers與來自一個UIImage內容,和大約30 CAShapeLayers每一個保持只是一個線段 - 雖然通常是在不同orientations-)

+0

我結束了使用setOpacity:0,並且這種方式的性能似乎更好。我沒有明確的證據,但是如果您遇到性能問題,您可能需要嘗試一下。 – baris 2010-11-05 18:10:16

回答

0

您應該使用的NSSet或NSArray的至維護一個未使用的calayers隊列。該過程與使用表格單元時的操作類似。

由於每個calayer都是removeFromSuperLayer'd,因此將它放入您的設置中,並在需要時從設備中拉出一個。

+0

謝謝,但我正在做類似的事情。我真正想知道的是,是否應該將圖層保留爲已經在屏幕上的某個圖層的子圖層(並將其隱藏起來或使其完全透明),或者將圖層硬件完全移除以便能夠「緩存」它更好。 – baris 2010-10-15 19:37:14

+0

隱藏圖層或使其透明可能會搶走你一些fps。最好保持層疊光源。所以我建議總是在不使用的時候將removefromsuperlayer刪除。 – Amanuel 2010-10-15 21:00:49

0

你提到的三個看起來像所有合理的事情要嘗試。你真的應該測試每一個,看看哪個給你的應用程序提供了最好的性能,結果可能會讓你大吃一驚。

+0

我還沒有能夠獲得我想要的任何表演。當我學會更有效地使用這些儀器時,我會做更多的「科學」測試。我已經用Core Animation樂器嘗試過它們,但有趣的是我的FPS似乎與所有這些樂器相當 - 但我可以注意到我的一個動畫正在跳過(相當多)幀。 – baris 2010-10-15 19:42:04

+0

嘗試使用採樣儀器或使用鯊魚。 – 2010-10-15 23:04:25

相關問題