2009-07-27 8 views
2

私はフォトギャラリーアプリを開発中です。ルートビューは、ユーザをサムネイルビューに移動させるナビゲーションコントローラです。サムネイルをタップすると、タップされた画像をフルスクリーンで表示するPhotoViewが表示されます。以下はUIScrollViewアプリがデバイスでクラッシュしていますが、シミュレータで完璧に動作しています

は私PhotoViewControllerでやっていることです:

アプローチはかなり似て、私はgithubので見つけScrollingMadnessプロジェクトにあります。

UIScrollViewを初期化し、サブビューとしてビューコントローラのビューに追加します。 UIScrollViewの基本的なプロパティを設定します。 UIImageViewsにイメージを追加します(数字は5)。 これらすべてのimageViewをサブビューとしてUIScrollViewに追加します。 画像上でズーム操作が実行されると、現在の画像サブビューはすべてスクロールビューから削除されます。 イメージが最小縮尺までズームアウトすると、すべてのイメージがUIScrollViewに再び追加されます。

Appleのサンプルコードで説明したように、TapDetectingImageViewデリゲートを使用してimageViewsを作成し、タッチイベントを処理しています。

私はアプリを実行すると、すべてのシミュレータで正常に動作します。何も問題はありません。しかし、デバイスでアプリを実行すると、3番目または4番目の画像にスクロールするとクラッシュします。デバッグ中は、3番目または4番目の画像にスクロールした後にdidReceiveMemory警告が呼び出されることがわかりました。 私はInstrumentsを使用してアプリを実行します。オブジェクトの割り当てでは、クラッシュが発生したときの割り当てレベルは1.5〜2MBに過ぎません。私はこのレベルのメモリ使用量は非常に正常だと信じています...そうですか?

これを前に経験した人、または私がそれを取り除く方法についてのどんな情報も、現時点で世界に必要なすべての助けとなるでしょう。

他の情報が必要な場合にお知らせください。

PS>そのシミュレータで全体アプリは完璧な見てイライラするが、デバイスにクラッシュ:(

答えて

2

そのメモリが不足しているのでそれがクラッシュし、あなたがチェックすべき一つのことは、画像の大きさである、されていますあなたは写真ライブラリから画像を取り出すことなく画像を取り上げますが、これは1600x1400の解像度の画像を与えることがあります。メモリが不足しているため電話がクラッシュするだけです。それを引き起こす可能性のある別の問題は、一度にたくさんの画像をロードしていることです(私はそうだと思いません)。もしあなたがスクロールビューを使用していれば、Iphone上の写真アプリケーションに似たスクロール表示になります。一度に3枚の画像を読み込んでください。ズーム時に画像が正しく表示されます。あなたがサンプルプロジェクトPageControlを見ているなら、iPhoneの写真アプリで絵をスクロールするのと同様の機能を達成しようとしているのかどうかはわかりません。

+0

ダニエル - あなたは完璧なピクセルです!画像は1200×1600であった。私はそれらを320x480に細断し、それは魅力のように機能します。 私が今使用している画像の数は5ですが、結局20枚の画像を使用する必要があります。あなたが言いましたように、laod imageViewsや、一度に3つの画像を読み込む方法を怠け者にすることをお勧めしたいなら、大きな助けになるでしょう。 ズームイン部分が処理されました。何もメモリに出入りすることはありません。すでにメモリに入っているコンテンツのサブビュー上にあるものだけです。 ご協力いただきありがとうございます。 –

+0

アップルのiPhone開発者サイトのサンプルプロジェクトPageControlを見てください。これは、あなたが望むものを達成するための良い例です – Daniel