使用估计的HeightForRowAtIndexPath 错误的滚动位置
Posted
技术标签:
【中文标题】使用估计的HeightForRowAtIndexPath 错误的滚动位置【英文标题】:Wrong scroll position with estimatedHeightForRowAtIndexPath 【发布时间】:2015-02-09 09:03:35 【问题描述】:我正在使用 UITableView
建立聊天。自然,每个聊天消息单元格的行高会有很大差异。我已经正确计算了每个单元格的行高,并且表格视图按其应有的方式执行。
但是,我想实现estimatedHeightForRowAtIndexPath:
以在消息很多的情况下提高性能。这样做的问题是它会影响scrollToRowAtIndexPath:atScrollPosition:Animated:
的滚动行为。
在我的viewWillAppear
生命周期方法中,我告诉表格视图向下滚动到最新消息(即底部消息),如果我不使用estimatedHeightForRowAtIndexPath:
,它会表现良好,但只要我这样做似乎只有从此方法返回的值用于计算滚动位置,而我最终处于错误的位置。
是否可以在不影响滚动行为的情况下从使用 estimatedHeightForRowAtIndexPath:
的效率提升中受益?
【问题讨论】:
【参考方案1】:UITableView
是UIScrollView
的子类所以方法
- (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated
UIScrollView
可能会帮助你实现你想要的
【讨论】:
在我的例子中,为了让这个方法正常工作,我必须计算我的表格视图中所有行的组合高度,对吧?这不就像使用heightForRowAtIndexPath:
而不使用 estimatedHeightForRowAtIndexPath:
一样昂贵吗?
是的,你是对的。但我认为只要您需要以编程方式滚动,就无法绕过计算。无论是自己计算在scrollRectToVisible
中,还是通过系统在scrollToRowAtIndexPath
中计算。
嗯,这就是我害怕的。伙计们,我必须想办法使计算尽可能高效:)以上是关于使用估计的HeightForRowAtIndexPath 错误的滚动位置的主要内容,如果未能解决你的问题,请参考以下文章