2011-09-14 9 views
0

ベストは何ですか?メモリ/パフォーマンス取引の質問?

約400個のボタン(ボタンには4つの状態があります)を処理します。 ベストは何ですか?各ボタンの4つの異なるOPAQUE画像を保存/表示するか、2つのALPHA MASKED pngの状態をアサンプルしますか?

私は質問が少し霧であることを知っています。 OPAQUE画像以上、またはALPHA MASKED未満ですか?

経験がある場合は、お気軽にお申し込みください。

+0

あなたは実際に同時に400個のボタンを表示しようとしていますか?それはすべてのボタンを最大にします。 'sqrt((320 * 480)/ 400)= 20x20'である。それは本当に意味があるとは思わないでしょうか? – elslooo

+0

:)ページ番号付きスクロール。一度に表示できるボタンは12個だけです。 – Geri

答えて

1

私が前に述べたように、これは良い考えではないと思います(UXの観点から)。しかし、これをやりたい場合は、パフォーマンスを向上させるために少しハックする必要があります。

代わりに400(あるいは400 * 4 = 1600)(基本的にはこの場合には同じだろうかUIButton S、)UIView Sを使用しての、あなたは1に固執すべきではUIViewをサブクラス化し、より速く、キャッシュされた描画のためのdrawRect:メソッドをオーバーライドします。

タッチイベントを追跡するために、touchesBegan ...touchesMoved ...などのイベントを無効にすることができます。ユーザーが1つの 'ボタン'を押すと(実際には1つのビューが表示されますが、どのボタンで表示するかを測定できます)、intを1つ更新し、setNeedsDisplayを呼び出して 'ボタン'を再描画します。

+0

答えに感謝します。もちろん、12×3のボタンだけが一度にロードされます。残りはスクロールイベントに遅延ロードされます。私はカスタムステートアクセサでdrawRectメソッドを実装していますが、十分に速くなることを願っています。 initでCGlayersを作成して、状態の変化をCGlayersで再描画するつもりです。あなたのアドバイスをもう一度おねがいします – Geri

+0

12個のボタンを作成し、必要に応じてラベルを変更することをお勧めします。 –

1

これは、正確に使用する場所によって異なります。静的な位置について話している場合は、アルファをマスクしてください。テーブル(およびスクロール可能なビュー)では、まずパフォーマンスをチェックする必要があります。

+0

ええ、彼らはスクロールされます。 Timのアプローチを以下に使用します。アドバイスありがとうございます。 – Geri

+0

Btw、私は私の目的のために、サブビューを使ってスクロールをもっとスムーズにして、セルを描画することが分かった(私はセル上に約7つのサブビューがあると思った。さまざまな高さのかなり大きいものでした - 120〜300 pxの間) – Ariel