2

私はフォトギャラリーアプリに取り組んでいます。ルート ビューは、ユーザーをサムネイル ビューに移動させるナビゲーション コントローラーです。サムネイルをタップすると、ユーザーは PhotoView に移動し、タップした画像が全画面表示されます。

以下は、PhotoViewController で行ったことです。

このアプローチは、私が github で見つけた ScrollingMadness プロジェクトとほとんど同じです。

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

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

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

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

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

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

4

1 に答える 1

2

メモリが不足しているため、クラッシュしています。確認する必要があるのは、写真のサイズです。編集せずに写真ライブラリから画像を選択していますか?メモリが不足しているため、電話をクラッシュさせるだけです。このため、画像のサイズを小さくする必要があります。それを引き起こしている可能性のあるもう1つの問題は、一度にあまりにも多くの画像をロードしていることです(私はそうは思いません)。スクロールビューを使用してIphoneの写真アプリケーションと同様のスクロールを行う場合は、一度に 3 つの画像を読み込みます。また、ズームしているときに画像を適切に解放していない可能性があります。iPhoneの写真アプリで写真をスクロールするのと同様の機能を実現しようとしているかどうかはわかりませんが、

于 2009-07-27T17:25:13.217 に答える