iPhoneの写真ピッカーとほぼ同じように見え、機能する写真のスクロールグリッドがあります。これは、一連の写真を表示するカスタムUITableViewCellを使用するUITableViewから構築されます(Three20と非常によく似ています)。イメージのロード中にUITableViewスクロールのパフォーマンスを向上させる
スクロールのパフォーマンスが悪いという点以外は素晴らしいです。私はすでに高速UITableViewスクロールのベストプラクティスのほとんどに従っています(àla Tweetie)。
画像はすべてアプリケーションにバンドルされています。必要に応じてUIスレッドにロードします。 UIImageのimageNamedを使用します。最初に読み込まれた後に画像がキャッシュされるようにします。一度テーブルビューをスクロールすると、非常にスムーズにスクロールします。
問題は、初めてテーブルビューをスクロールするとスクロールがぎこちないことです。私はアプリをプロファイリングして、ファイルシステムから画像を読み込むのに大部分の時間が費やされていることに気付きました。これらはJPEG画像で、すでにサイズが正しく(小さい)サイズになっています。代わりにPNG画像を使用しようとしましたが、パフォーマンスはあまり改善されません。
iPhoneの写真ピッカーは、はるかに良いローディングパフォーマンスを発揮します。すべての写真を1つの画像にまとめると、一度読み込んだ後に小さな画像に分割する方が速くなるのではないかと思います。それは確かにゲームでは機能しますが、実際にはまったく別の話です。誰もその経験をしていますか?
私はパフォーマンスを改善するための他のアイデアはありますか?
ちなみに、私は、行ごとにimageViewに割り当てられた1つのイメージで標準のUITableViewCellsを使用している別のUITableViewのパフォーマンスの問題はそれほどありません。
プリキャッシングと非同期ロードの両方の手法を試しました。非同期読み込みはひどく見えました。なぜなら、画像はすばやく読み込まれますが、ゆっくりと目立つちらつきが発生するからです。プリキャッシングはうまくいった。私は数ヶ月で350枚の画像をプリキャッシュする必要があるときに何が起こるのか心配しています(私は現在100枚だけプリキャッシュする必要があります)。偉大な答えをありがとう。 –
よろしくお願いします!非同期読み込みの場合、プレースホルダイメージを持たない方が良いかもしれませんが、代わりにイメージが表示される空白領域です。それはちらつきを防ぐかもしれない。 –