什麼是最好的?內存/性能交易問題?
我想處理約400個按鈕(按鈕有4個狀態)。 什麼是最好的?要爲每個按鈕存儲/顯示4個不同的OPAQUE圖像,或者從2 ALPHA MASKED png中拼寫狀態?
我知道這個問題有點模糊。 更多OPAQUE圖像,或更少,但ALPHA MASKED?
如果有任何經驗,請分享。
什麼是最好的?內存/性能交易問題?
我想處理約400個按鈕(按鈕有4個狀態)。 什麼是最好的?要爲每個按鈕存儲/顯示4個不同的OPAQUE圖像,或者從2 ALPHA MASKED png中拼寫狀態?
我知道這個問題有點模糊。 更多OPAQUE圖像,或更少,但ALPHA MASKED?
如果有任何經驗,請分享。
正如我之前提到的,我真的不認爲這是一個好主意(從用戶體驗的角度來看)。但是,如果您確實想要這樣做,則應該「增加一點點」來提高性能。
除了使用400(甚至400 * 4 = 1600
)UIView
S(或UIButton
s,這將基本上是在這種情況下一樣),你應該堅持一個子類UIView
並覆蓋更快,緩存繪圖drawRect:
方法。
您可以覆蓋touchesBegan ...
,touchesMoved ...
等事件來跟蹤觸摸事件。當用戶按下一個'按鈕'(實際上,它按下了你的單個視圖,但你可以測量它的按鈕),你更新一個單一的int
-變量並且呼叫setNeedsDisplay
重新繪製'按鈕'。
非常感謝您的答案。當然,只有一次只能加載12 * 3按鈕。其餘部分將在滾動事件上加載。我正在使用自定義狀態訪問器實現drawRect方法,希望它足夠快。我打算在初始化時創建CGlayers,然後在狀態更改時重新繪製它們。再次感謝您的建議。 – Geri
我建議只創建12個按鈕,並在必要時修改標籤。 –
恩,你實際上試圖同時顯示400個按鈕?這將使每個按鈕最大。 'sqrt((320 * 480)/ 400)= 20x20'。不要認爲這是真的有道理,是嗎? – elslooo
:)分頁滾動。一次只能看到12個按鈕。 – Geri