私のアプリでは、私は300イメージ(400 kB)を表示するスクロールビューを使用します。 2分ほどかかるので、上下にスクロールするとスムーズではありません。ScrollViewが遅すぎる - メモリ管理の問題?
どうすればこの問題を解決できますか?
注:スクロールビューの最後までスクロールした後、スムーズになります。 スクロールに関する問題が初めて表示されます。
私のアプリでは、私は300イメージ(400 kB)を表示するスクロールビューを使用します。 2分ほどかかるので、上下にスクロールするとスムーズではありません。ScrollViewが遅すぎる - メモリ管理の問題?
どうすればこの問題を解決できますか?
注:スクロールビューの最後までスクロールした後、スムーズになります。 スクロールに関する問題が初めて表示されます。
は(あなたのイメージをロード)あなたのロード機能でこれを追加してみてください。 whileまたはforループを使用してイメージをロードする場合は、このコードをループに追加します。
NSURL *url=//here url for your image
dispatch_queue_t currentQueue = dispatch_get_current_queue();
dispatch_queue_t dataConvertorQueue = dispatch_queue_create("Fetching images", NULL);
dispatch_async(dataConvertorQueue, ^{
NSData *data = [NSData dataWithContentsOfURL:url];
dispatch_async(currentQueue, ^{
//replace imageView with your imageView outlet
imageView.image = [[UIImage alloc] initWithData:data]];
});
});
dispatch_release(dataConvertorQueue);
このコードは、URLから画像を取得して表示するのに役立ち、テーブルビューでうまく機能します。それはあなたが望むものではないかもしれませんが、それはあなたにそれを行う方法のアイデアを与えるでしょう。それがあなたを助けることを願っています。
すべての画像を先に読み込まないでください。その瞬間と次の最後の画像に表示する画像をロードするだけです。
私の知る限り、スクロールビューの読み込み/表示時にすべての画像が読み込まれることを理解しています。あなたは画像をたくさん持っているので、メモリに3つの画像をロード/保持するだけで、はるかに高速で、より多くのメモリを節約できます。 これは、表示されている前/左の画像で、表示されません。現在表示されている画像と表示されていない次/右の画像です。
左にスワイプすると、スクロールビューが基本的に左に移動し、既に読み込まれている右のイメージが表示されます。バックグラウンドでは、次の右のイメージをロードしますが、最も左のイメージの割り当てを解除します。
常に最大4枚の画像が読み込まれています。
WWDC 2011 - セッション104の高度なスクロールビューの無限のスクロールビューの例を見てください。
あなたはもっと説明できますか?私はうまく理解しています。 – yatanadam
私はthisがあなたの問題を解決すると思います。この質問はあなたにいくつかのコンテキストを与える可能性があります
How to reuse/recycle custom element like uitableviewcell does?
あなたの質問はどのようにメモリ管理に関係していますか?あなたはアプリのプロファイリングを試しましたか? – trojanfoe