我已經創建了一個項目。 並且有三組圖像需要顯示,每組有5個圖像。 在應用程序中,圖像將每0.2秒更換一次。 ,圖片大小隻有30 * 30,所以屏幕上大概有80張圖片,都是動畫。 但是當我測試這個時,我覺得fps似乎變成了0.8秒,非常慢。關於fps的問題
所有的圖像都繪製在一個UIView。我在方法 - (void)drawRect中使用[image drawInRect:]。 因此,我有什麼建議讓fps更快?
我已經創建了一個項目。 並且有三組圖像需要顯示,每組有5個圖像。 在應用程序中,圖像將每0.2秒更換一次。 ,圖片大小隻有30 * 30,所以屏幕上大概有80張圖片,都是動畫。 但是當我測試這個時,我覺得fps似乎變成了0.8秒,非常慢。關於fps的問題
所有的圖像都繪製在一個UIView。我在方法 - (void)drawRect中使用[image drawInRect:]。 因此,我有什麼建議讓fps更快?
你有沒有試圖把80個UIImageView
S上的屏幕上?如果您只在需要的時候在每個圖片上設置新圖片,則應該會看到改進。
原因是每個UIView
都有它自己的CALayer
,它在需要時被複制到圖形內存。在一個像素上覆制非常緩慢(但是一旦它在那裏被緩存),所以如果您一次只更新一個30x30的磁貼,您應該看到比不斷更新屏幕更好的性能。
你當然可以手動管理80個CALayers單一的UIView內,但是這將是比使用80個UIImageView
很難能用。
任何時候你重寫-(void)drawRect
你很可能會影響性能很多,因爲路CALayers與顯存互動。 iPhone的Quartz圖形系統針對具有大量靜態圖層進行了優化,然後可以使用圖形命令(變換,不透明等)進行操作。
簡介。使用Instruments應用程序查找代碼中哪部分運行速度最慢,然後查看您是否可以加速或避免頻繁調用它。例如:你是否真的需要重新繪製所有的圖像?你可以使用Core Animation或OpenGL ES來替換一些Cocoa Touch代碼嗎?
迭代。一旦你做了一個調整,重新輪廓。它變得更好了嗎?如果確實如此,那麼尋找下一步加速。如果沒有,請決定它是完全有用還是應該恢復。
很好,每次你畫的東西......這是一個工作......你也許可以得到更好的表現剛剛開始加載所有的圖像,然後只要將他們在屏幕上(與隱藏/顯示您的UIImageView)如果圖像太小,你將不會有內存問題...
不,我不使用UIImageView。我只是使用drawRect方法在UIView中繪製所有圖像。沒有任何其他的UIViews。總的圖像不只是80。這可能遠不止這個數字,80是一個UIView中的最大值。 – toad 2011-03-08 11:48:25
我知道你不知道,我建議你試試看 – 2011-03-08 17:28:01