2012-09-06 40 views
-1

我很新的iOS編程,我有這個問題。iOS中的動畫與大量高分辨率圖像

我有一個觀點,動畫是火車衝過去的地方。動畫的框架是60(1024x768)PNG,我把它放在一個數組中,然後使用[myUIImageView startAntimating]

這個作品非常漂亮,但我有另一個動畫,我想稍後在相同的視圖中運行,大約270 png的相同分辨率,其中火車停下來,門打開。以相同的方式將這些圖像添加到UIImageView並不意外使應用程序崩潰。實際上,不添加第一組圖像並僅添加這些圖像會導致應用程序崩潰。

解決此問題的最佳方法是什麼?

+0

嗨,我面臨同樣的問題..如果你已經解決了,你會請幫助...? –

+0

@Chitra我解決它的方式如下所述。 –

+0

誰可以downvoted這個請解釋爲什麼 –

回答

1

抱着270個這樣的PNG應該需要大約850MB的內存,所以你不能一次把它們全部放在一起。我能想到的三種方式來解決這個問題 -

  1. 沒有一次加載所有的圖像,而只是保持(說)10幅圖像在內存中,丟棄已經顯示的圖像,並從磁盤加載新的。
  2. 使用專用的電影格式;這些格式具有幀間壓縮,其中新幀僅保持其與前一幀之間的差異。這顯然減少了內存使用量。看看libav's FAQ看看如何將一系列圖像轉換成電影。
  3. 減小圖像的大小。如果你不在iPad上,或不需要視網膜分辨率,減少像素數量將大大減少內存需求。
+0

感謝這:)所以,如果我去選擇一,我會創建一個前十個圖像的數組,動畫那一次,然後用相同的數組替換它,但與接下來的十個圖像,並一次動畫?你認爲這會起作用嗎?我會給它一個去,如果沒有,我會嘗試選項2.再次感謝。 –

+0

就是這樣的;您可能想要保存兩個陣列,一個正在顯示,另一個正在從磁盤加載圖像。每當顯示結束時,交換數組。希望圖像能夠加載得足夠快。就個人而言,我只是直接去展示一部電影。你爲什麼要處理個人圖像? – user1071136

+0

因爲這是我從我們的設計師發出的......他離開了兩個星期。我想我可以嘗試將這些圖像拼接成一個視頻。 –