UIImageViewで一連のPNGを使用して達成したいアニメーションがいくつかあるとします。 アニメーションに多数のイメージがある場合、メモリ内のすべてのイメージをロードするので、メッセージが送信されてから遅れがあります。[myImgView startAnimation]
読み込みが遅延していることに気付きました。startAnimationメッセージが送信されない限り、イメージはメモリに読み込まれません。 遅延の問題を回避するには、アプリケーションデリゲートのすべてのアニメーションを読み込み、サブビューとしてアタッチし、アニメーションを1回しないようにします。私は最高の解決策が何であるかを理解したいですか?私の実際の解決策がドループを持っていれば?iOS上にアセットをあらかじめロードする
2
A
答えて
1
あなたは遅延ロードについて正しくあります。私は決してディスクからの怠惰なスプーリングか怠惰な減圧かどうかを判断することはできませんでしたが、UIImage(とその下のCGImage)は必ずしも完全に処理されず、実際に使用されるまで描く準備ができていません。 Appleがメモリ警告を内部的にどのように処理するかによって、未来になると考えられます。
CoreGraphicsを使用してバックグラウンドでイメージを展開し、startAnimationで読み込みが完了していない場合にのみ読み込みを終了するのが最適なソリューションだと思います。 UIKitオブジェクトは、メインスレッド以外のどこでも呼び出すことができないため、直接行うことはできません。 CGImageを取得し、ビットマップコンテキストに描画し、ビットマップコンテキストからイメージを作成し、UIImageにラップするためにメインスレッドにポストする必要があります。そして、おそらくNSOperationQueueを使用して操作の完全なリストを整理することは賢明でしょう。
すべてのPNGをロードしている間にメモリの警告を正しく処理している間に、ブロッキングの追加起動コストが気にならないとすれば、現在の方法に問題はないはずです。高レベルのObjective-Cに残ったまま、
関連する問題
- 1. cocos2Dのアセットをあらかじめロードする
- 2. iOS 7でデータベースをあらかじめロードする
- 3. Rails 3.1.3 - ベンダー/アセット/スタイルシートのサブフォルダからアセットをロードする
- 4. divに背景イメージをあらかじめロードしますか?
- 5. UIPageViewController(Swift)にすべてのUIViewControllerをあらかじめロード
- 6. CSSファイルをあらかじめロードする
- 7. 多数の画像をあらかじめロードする
- 8. AjaxとJqueryでJsonファイルをあらかじめロードする
- 9. コンボボックスの項目をEXTjsであらかじめロードする
- 10. RunAsyncコード分割をあらかじめロードする方法
- 11. javacriptのSVGをあらかじめロードする
- 12. 大量の画像をあらかじめロードする
- 13. 複数の背景をあらかじめロードする
- 14. javascriptでレールに部分図をあらかじめロード
- 15. jPlayer with Playlist:あらかじめロードする方法は?
- 16. ウェブサイトのパフォーマンスを向上させるか、mp4/gifの背景をあらかじめロードする
- 17. 弾力のある豆の上にアセットをロードしていないレール
- 18. 以前に選択したオプションのフォームをあらかじめロードする
- 19. html/phpにあらかじめ完成した単語文書をロードする
- 20. jarの起動時にJavaクラス/ライブラリをあらかじめロードする?
- 21. tomcat 8にあらかじめ圧縮されたJSファイル(.js.gz)をロードする
- 22. ユニティios上でstreamingassetsからイメージをロードする方法
- 23. html javascriptボタンでアセットからhtmlをロードするアンドロイドウェブビューをクリック
- 24. ロード画像アセット
- 25. 'resources'フォルダの外からアセットをロードする
- 26. 外部からロードされたSWFアセットを収集するガベージブ
- 27. アセット/ imagesディレクトリから画像をロードするクリップ
- 28. AS3 - 外部SWFからMovieClipアセットをロードする方法
- 29. エリクシル/エクトで多型構造のassocをあらかじめロードする
- 30. iosキャッシュからビデオソースをロードするためのCordovaファイルプラグイン
PNG圧縮解除は、アルゴリズム自体の複雑さのために、(比較的)スピードが非常に遅いという問題もあります。通常、JPEG画像は読み込みが高速ですが、必ずしも理想的ではありません。画像データをプリロードすることができる限り、オンザフライで解凍することによるヒットを回避することができる。 –
これは、代わりの解決法を示唆しています:PNGを絶対最小圧縮でエンコードします。これは、すべてのスキャンラインとraw/literalセクションとして格納されたすべてのdeflateブロックに対してフィルタ0(予測なし)と思われます。その程度まで出力を微調整できるソフトウェアは認識していませんが、XcodeがPNGでいくつかの追加処理を行っていることを知っていますので、基本的に非圧縮のPNGを正しくバンドル。 – Tommy