-1

私はiOSプログラミングにかなり慣れていないので、この問題があります。

アニメーションが急いで通り過ぎる電車であるという見方があります。アニメーションのフレームは60ish(1024x768)pngで、これを配列に入れて使用します[myUIImageView startAntimating]

これはうまく機能しますが、後で同じビューで実行したい別のアニメーションがあります。これは、同じ解像度の約270 pngで、電車が停車してドアが開きます。同じ方法でこれらの画像をに追加すると、UIImageView当然のことながらアプリがクラッシュします。実際、最初の画像セットを追加せず、これらの画像のみを追加すると、アプリがクラッシュします。

この問題を克服するための最良の方法は何でしょうか?

4

1 に答える 1

1

このようなPNGを270個保持すると、約850 mbのメモリが必要になるため、一度にすべてを保持することはできません。私はこれを解決するための3つの方法を考えることができます-

  1. すべての画像を一度にロードするのではなく、(たとえば)10個の画像のみをメモリに保持し、すでに表示されている画像を破棄して、ディスクから新しい画像をロードします。
  2. 専用のムービー形式を使用します。これらのフォーマットにはフレーム間圧縮があり、新しいフレームは前のフレームとの違いのみを保持します。これにより、明らかにメモリ使用量が削減されます。一連の画像をムービーに変換する方法については、libavのFAQをご覧ください。
  3. 画像のサイズを小さくします。iPadを使用していない場合、またはRetina解像度を必要としない場合は、ピクセル数を減らすとメモリ要件が大幅に削減されます。
于 2012-09-06T14:43:25.003 に答える