2010-10-14 73 views
1

我的應用程序的體系結構/分層結構看起來像這樣:使用大量CALayer對象時優化性能的技巧?

UIView 
UIView 
CALayer | CALayer | CALayer | CALayer .... (and a few hundred more) 

這些CALayer的實例表示在點陣顯示小方點用於快速倒計時鐘。我會盡可能每秒更新一次backgroundColor。其實我想要的是每秒60次,但我猜設備不能這樣做。

我有一個計時器,經常調用方法。然後這個方法遍歷這些像素點層,並將它們的backgroundColor設置爲現在需要的任何東西。

你有什麼優化技巧可以提高性能?

一兩件事,在我腦海中:

1)告訴每一個CALayer的,它是不透明的!

我想還有更多的優化可能性。也許不是像我這樣的平面層次結構,而是一個非常深的層次結構,每個CALayer都是另一個層次的子層?不確定。

回答

2

難道你不能簡單地忘記圖層,並使用Quartz渲染每幀圖像?

+0

我覺得這很慢。之前我曾嘗試過這樣的事情,結果非常糟糕。 -drawRect像100年前的蝸牛一樣緩慢。 – 2010-10-14 11:09:28

+0

@BugAlert:你正在進行投機。回到@ zoul的建議,如果有問題,找出它是什麼。如果速度很慢,單箇中斷和堆棧跟蹤會顯示出問題。 – 2010-10-14 13:28:30

+0

我會說繪製一堆填充的矩形不能那麼慢。但正如邁克所說,在績效方面,你必須首先考慮問題,然後再考慮。在最糟糕的情況下,您可以下載到OpenGL(如果在您的應用程序的其餘部分有可能的話)。 – zoul 2010-10-14 13:46:36