2011-03-29 46 views
1

我在長滾動視圖上有200多個UI標籤,我需要提高滾動性能。隱藏和取消隱藏標籤,或者在視線不清的情況下釋放它們並重新創建它們會更好嗎? 對他們我已經把標籤,我目前使用的那些隱藏/取消隱藏有:隱藏或刪除用於顯示效果的UI標籤

for (int i=0; i<42; i++) { 
     [theScroller viewWithTag:i].hidden = NO; 
    } 

,反之亦然,通過滾動contentOffset.y值觸發..

我有我的uiLabels集合中plist所以它也很容易釋放和重建它們?

感謝您的幫助..

回答

1

@Mark yes最好是釋放標籤,好像它們不在視圖中,不在使用中,所以它們會提高性能並幫助您進行內存管理。

+0

釋放一個uiLabel我會打電話:for(int i = 0; i <42; i ++){[release [theScroller viewWithTag:i]]; }?這會使標籤消失嗎? – mtompson 2011-03-29 08:20:35

+0

@mark在循環中使用這種方式寫入[[theScroller viewWithTag:i] release];;不是這樣[release [theScroller viewWithTag:i]];上面提到的我會釋放標籤。 – Sabby 2011-03-29 10:11:40

+0

感謝Sabby,只是另一件事!我已經看到,當我爲我的對象添加標籤時,我不應該使用0或1,你(或任何人)聽說過這個嗎? – mtompson 2011-03-29 11:00:18

1

有200+的意見減少了由於演出:

  • 內存使用
  • 顯示管理/動畫

這絕對會是更好的刪除並釋放隱藏的標籤,並在需要時重新創建它們:內存佔用空間較小,超級視圖只有幾個子視圖可供管理(加上ove再造標籤的價值並不高)。

如果您的scrollview +標籤行爲接近於表視圖,還有進一步改進的餘地:標籤重用。從他們的超級視圖中刪除隱藏的標籤,更改他們的標題/風格,並重新添加到他們的新位置。

+0

感謝您的刪除/發佈建議。我不認爲我可以使用表格或重複使用標籤,因爲我所有的標籤都是不同尺寸的? – mtompson 2011-03-29 08:18:20

+0

可以隨時更新標籤的樣式和框架(儘管您需要更多的工作來重新計算框架)。不過,您可以從稍後的刪除發佈+重新創建開始,看看它是否足夠。 – Jilouc 2011-03-29 08:26:44

+0

當我回家時,我會給它一個,非常感謝.. – mtompson 2011-03-29 08:33:12

0

如果每個標籤都是剛性的,您可以嘗試使用tableView和滾動視圖。

使用自定義表格單元格,每個單元格都有您的標籤。

+0

當我的所有標籤都是不同的尺寸和顏色時,我可以使用tableView嗎? – mtompson 2011-03-29 08:20:03

+0

您可以實時配置它。 – WaiLam 2011-03-29 08:34:10

1

可能有助於提高性能的一件事是將標籤設置爲不透明。使用具有透明背景的視圖時,性能會降低。

在飛行中創建它們絕對是一個解決方案,但是,您可能會注意到滾動可能會時不時地掛起,或者滾動後短時間內不會顯示標籤。

另一種解決方案是使用this article的方法。這個想法是,你將預先渲染視圖上的標籤,並最終得到一個靜態視圖,當你滾動時,它應該可以很好地工作。

+0

非常感謝,我將閱讀文章,我的scrollView是92000像素長! – mtompson 2011-03-29 08:23:45

+0

關於透明問題,我確實有一大組uilabels,我已經旋轉了90度,並且他們的背景顏色設置爲清除,任何解決方法? – mtompson 2011-03-29 08:25:02

+0

嗯閱讀文章該方法處理透明問題無論如何!我會閱讀... – mtompson 2011-03-29 08:31:58