2015-02-09 70 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