2012-02-27 12 views
1

サイズは5534×3803、サイズは2.4MBです。 UIViewの参照があることに注意:大きな画像をあらかじめ読み込み

「のiOS 3.0以降では、ビューは、もはやこの最大 サイズに制限されていないが、それでも彼らは消費するメモリの量によって制限されています。」

すると画像が読み込まれると、それは0.5秒遅れ、その後にスライドする。画像は1024x704でUIImageViewに座っているが、私のアプリのためにそのサイズを4倍してスケールアップすることができます。

AppDelegateで画像をプリロードできますか?または、そのような大きなイメージを持つことを回避する別の方法がありますか?

おかげ

EDIT:スケーリングがUIPinchGestureRecognizerを介して行われ、アップスケールし、(スケール×4 - ×1)で行われている画像の中心点に基づきます。

+1

多分これがhttps://developer.apple.com/library/ios/#samplecode/PhotoLocations/Introduction/Intro.htmlに役立つでしょう – Nathan

+0

あなたの質問に答えられるかどうかわかりませんが、この[要点の投稿](https://gist.github.com/1144242)助けてもらえるかもしれない – esqew

+1

2.4mbは圧縮されたサイズだと思います。圧縮されていない場合は、5534 * 3803 * 4バイト - 80MB以上が必要です。私はWWDC 2010のセッション104を見ることをお勧めします。スクロールビューでアプリケーションを設計するhttps://developer.apple.com/videos/wwdc/2010/?id=104 – hoshi

答えて

2

個人的には、大きな画像を小さい画像のグリッドにスライスして、その巨大な画像を読み込まないようにするタイルベースのシステム(Googleマップと考える)を作成しようとします。一度にすべてRAMに入れます。私はあなたのユーザーのやりとりがこの画像にどのようなものか、画像があなたのプロジェクトに変わっているのか、それとも焼き付けられているのかは分かりませんが、私はその画像がどんなiOSスクリーンよりも大きいので、タイルベースのシステムでは、オンスクリーンの画像のみを読み込みます。 CATiledLayerは、このようなことをするためのAppleクラスです。それはおそらくあなたが調べたいものです。

いくつかの異なるアプローチについては、this StackOverflow questionを参照してください。受け入れられる答えはAppleのサンプルPhotoScrollerプロジェクトのコードを使用します。これはあなたのニーズに対応し、CATiledLayerを使用します。

このScrollViewSuiteアップルのコードも手に入ります(タイリングコードをチェックしてください)。

+0

この方法は、パンしなくても実行可能ですか?私は単に画面の境界内で全体の画像を見るようにズームアウトしてから、実際のサイズ(約4倍のズーム)まで拡大することができる大きな画像を持っています。 –

+0

フルサイズのバージョンをスクロールできないようにするには、4つの異なるサイズのイメージをディスクに保存して、「フルサイズ」のバージョンを保存しておきますiPad/iPhoneの画面領域に合うようにユーザーに表示してもらいます。これはあまり柔軟ではありませんが、メモリの問題を回避します。 – poetmountain

+0

リンク先のPhotoScrollerプロジェクトを見てみることをお勧めします。私はそれがAppleが写真アプリで行っていることと似ていると思います。ソース画像がどれほど大きくても、写真の読み込みは高速です。 – poetmountain

関連する問題