2011-03-16 13 views
1

シンプルなギャラリータイプのアプリケーションでロードする必要がある約20-ishの高品質画像(〜3840x5800ピクセル)があります。ユーザーがボタンをクリックすると、次の画像がUIImageViewに読み込まれます。iphoneのベストプラクティス、複数の高品質画像を読み込む方法

私は現在、[UIImage imageWithContentsOfFile:]を使用するシミュレータで各画像をロードするために約6秒かかり:(

を私が使用している場合、[UIImage imageNamed:]をそれが意味してロードするためにも時間がかかりますが、画像をキャッシュしますユーザーが同じ画像を再び見たい場合は速くなりますが、後ですべてのキャッシングでアプリがクラッシュするため、メモリの問題が発生する可能性があります。

これをロードするベストプラクティスを知りたいですか?画像ファイルのサイズは可能な限りですが、実際にはアプリケーションの目的で高画質の画像(ズームなど)が必要です。

何かアドバイス

[EDIT]再び

やあみんなのために10人の

おかげで、すべてのye'reアドバイスを

感謝。プロジェクトの仕様は少し変わった。今では、画像を表示するだけでなく、まず特定のスポットにズームインしなければならず、ユーザが次にタップすると、ズームアウトして次の画像を表示します。したがって、提案されたソリューションが適合するかどうかはわかりません。

+1

ズームが必要なので大きなものが必要な場合は、それらを断片化し、現在表示されている部分のみをGoogleマップのスタイルのように読み込むことをおすすめします。 100x100のような何かがそのトリックを行うべきです。 – jakev

+0

NS6Stringに感謝します。私は別のプロジェクトに取り組んでいますが、来週にこれに戻ってきて、あなたが言ったことを一度見てみましょう。 – bennythemink

答えて

3

Apple's docsは、1024x1024より大きい単一の画像を読み込もうとしないことをお勧めします。代わりにCATiledLayerを使用して、必要に応じて画像の一部を読み込む必要があります。

+3

これを使うには素晴らしいWWDC10ビデオがあります。また、CIMGFには、それを行う方法に関する良い記事がありました。 http://www.cimgf.com/2011/03/01/subduing-catiledlayer/ – Walter

+0

AnomieとWalter、アドバイスをいただきありがとうございます。私は別のプロジェクトに取り組んでいますが、来週にこれに戻ります。あなたが言ったことを一度見て、ここに再投稿してください。 – bennythemink

+0

@walter - photoscrollerに関するWWDC10ビデオへのリンクはありますか?私はそれを見つけるように見えない。 –

0

いつでもすべてのピクセルを表示することはできませんので、すべてをロードする必要はありません。ユーザーがズームした後に、低解像度コピー(「大きなサムネイル」)をロードして完全な画像を表示し、次に選択されたサブタイルを表示します。

CATiledLayer APIは、あなたのために後者のいくつかを処理します。

+0

おかげでhotpaw2、私は別のプロジェクトに取り組んでいますが、これに戻って来週に戻り、あなたが言ってきたことを一度見てみましょう。 – bennythemink

1

あなたは、このアップルのサンプルを見てすることができます http://developer.apple.com/library/ios/#samplecode/PhotoScroller/Introduction/Intro.html#//apple_ref/doc/uid/DTS40010080

これは、異なるズームレベル用のタイルにそれらを破る、大きなイメージをロードする方法を示しています。

+0

Hey Swisstricky、私は別のプロジェクトに取り組んでいますが、次の週にこれにこれを書いて、アドバイスをいただきありがとうございました。 – bennythemink

関連する問題