2009-05-05 47 views
0

我有一個圖像網格UIScrollView。目前他們只有6個,但有一天可能會有幾百個。所以當然,在UIScrollView中創建幾百個UIImageView對象並將它們全部填充圖像數據是一個不錯的主意。我認爲我正在閱讀蘋果文檔中的某個地方:他們建議您只需創建如此滿足您需要填充可滾動顯示區域的元素。UIScrollView:如何在用戶滾動時在我的可滾動網格中回收對象?

但是我害怕性能問題,如果我立即重新定位UIImageView元素。我認爲。當用戶開始向下滾動(讓我們假設它從0,0開始)時,我必須重新定位在頂部可見區域外的那些UIView對象,將它們快速定位到底部,然後分配非常(! )快速將一個新的圖像對象映射到該行中的UIImageViews。我的意思是......如果用戶像野瞪羚一樣開始滾動,越來越快?

您的方法如何?

回答

1

在一個類似的,雖然規模較小的情況下,我通過加載比滾動視圖維度所需更多的數據來處理這個問題,但不是整個數據集。我只是水平滾動,發現在當前可見的每一面上加載1或2張圖像使得事情變得美觀和平滑。當只有1張圖片可見時,它仍然會載入3或5張圖片,但這比裝載數十張圖片要好得多。你需要稍微試驗一下,看看你需要在可見區域周圍放置多少污水。

動態加載/卸載圖像最好在滾動視圖的委託方法中處理。

1

UIScrollView(或實際的UIKit)非常擅長不重繪不變的東西。如果你只是移動(或刪除回收)屏幕(或剪輯)的意見,你不會重新繪製。同樣在屏幕外添加子視圖。

如果你沒有啓用分頁,你可能不得不實現一些UIView提供的更快的繪圖代碼。不過,我會先測試 - iPhone的物理限制在一定程度上限制了滾動。