私はフォトギャラリーアプリを開発中です。ルートビューは、ユーザをサムネイルビューに移動させるナビゲーションコントローラです。サムネイルをタップすると、タップされた画像をフルスクリーンで表示する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>そのシミュレータで全体アプリは完璧な見てイライラするが、デバイスにクラッシュ:(
ダニエル - あなたは完璧なピクセルです!画像は1200×1600であった。私はそれらを320x480に細断し、それは魅力のように機能します。 私が今使用している画像の数は5ですが、結局20枚の画像を使用する必要があります。あなたが言いましたように、laod imageViewsや、一度に3つの画像を読み込む方法を怠け者にすることをお勧めしたいなら、大きな助けになるでしょう。 ズームイン部分が処理されました。何もメモリに出入りすることはありません。すでにメモリに入っているコンテンツのサブビュー上にあるものだけです。 ご協力いただきありがとうございます。 –
アップルのiPhone開発者サイトのサンプルプロジェクトPageControlを見てください。これは、あなたが望むものを達成するための良い例です – Daniel