2

私は、ユーザーが多数の画像 (通常、1 つの水平スクロール ビューで約 20 個の .jpg ファイル) をスクロールできる iPad アプリに取り組んでいます。ファイルサイズはそれぞれ約200kbです。ユーザーがボタンをクリックして画像を保存できるようにしたかったので、画像は UIButton の「Background」プロパティとして設定されています。アプリを実行するたびに、しばらくスクロールするとクラッシュします。スクロールしない場合は、正常に動作します。パフォーマンス ツールを使用してアプリを実行しましたが、リークは見つかりませんでした。

アプリがクラッシュする直前に、"Level=1" というメモリ警告が表示されます。スクロールビューで約8枚の画像で実行しましたが、問題はありませんでした。だから私はそれがscrollViewと画像/ボタンと関係があることを知っています。「viewDidLoad」メソッドでは、次のようにして scrollView をセットアップし、Interface Builder にリンクしました。

[scrollView setContentSize:CGSizeMake(5722, 340)];
[scrollView setScrollEnabled:YES];
[scrollView setDelaysContentTouches:YES];

これを機能させる方法についてのアイデアはありますか? Interface Builder のボタンに画像を直接追加しました。背景画像を削除し、代わりに「viewDidLoad」メソッドで背景を設定すると役に立ちますか? どんな助けでも大歓迎です。

4

2 に答える 2

1

あなたがする必要があるのは、これらの画像が生きている個々のセルを作成し、テーブルビューで得られるようにリサイクルされるように思えます。これを行うコードがいくつかあります。これを目的に使用するか、少なくとも試してみてください。テーブルビューと同じように機能します。

こちらから入手できます。これは、これらのいずれかを作成し、どこかのビューでそれを平手打ちし、個々のセルを作成するだけで済むという点で、すでに面倒な作業を行っています。これらのセルはスクロール時に再利用されるため、一度に N + 2 個を超えるセルをメモリにロードする必要はありません。N は画面に収まる数です。

于 2010-12-28T18:39:37.967 に答える
0

ジャーが書いたように、問題はリサイクルにあるようです。tableView:cellForRowAtIndexPathで新しいセルを取得するたびに、各セルのコンテンツを削除、解放、更新してください。

(私はjerの投稿にコメントしたでしょうが、おそらく私の制限された許可のために、これを行うことができません)。

于 2010-12-28T18:46:39.533 に答える