2015-02-09 69 views
4

我正在建立一個使用UITableView的聊天。自然地,每個聊天消息單元的行高會有很大差異。我已經正確計算了每個單元的行高,並且表視圖按照它應該執行的那樣執行。錯誤的滾動位置與estimatedHeightForRowAtIndexPath

但是,我想實施estimatedHeightForRowAtIndexPath:以加快性能,以防萬一消息。問題在於它影響了scrollToRowAtIndexPath:atScrollPosition:Animated:的滾動行爲。

在我的viewWillAppear生命週期方法中,我告訴表視圖以向下滾動到最新消息(即底部消息),如果我不使用estimatedHeightForRowAtIndexPath:,則執行得很好,但只要我這樣做,似乎就好像是隻有從這個方法返回的值被用來計算滾動位置,並且我在錯誤的位置結束。

是否有可能從使用estimatedHeightForRowAtIndexPath:而不影響滾動行爲的效率收益中受益?

回答

0

UITableViewUIScrollView子類,所以該方法

- (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated 
UIScrollView

可以幫助你達到你想要

+0

在我的情況是什麼,這個方法才能正常工作,我將不得不計算組合我的表格視圖中所有行的高度正確嗎?是不是像使用'heightForRowAtIndexPath:'沒有'estimatedHeightForRowAtIndexPath:'一樣昂貴? – 2015-02-09 22:35:21

+0

是的,你是對的。但我認爲只要您需要以編程方式滾動,計算無法繞過。無論是由系統自己計算還是在'scrollToRowAtIndexPath'中計算。 – dopcn 2015-02-10 01:39:38

+0

嗯,那就是我所害怕的。我必須找出一種方法來儘可能高效地進行計算:) – 2015-02-10 13:39:35