使用估计的HeightForRowAtIndexPath 错误的滚动位置

Posted

技术标签:

【中文标题】使用估计的HeightForRowAtIndexPath 错误的滚动位置【英文标题】:Wrong scroll position with estimatedHeightForRowAtIndexPath 【发布时间】:2015-02-09 09:03:35 【问题描述】:

我正在使用 UITableView 建立聊天。自然,每个聊天消息单元格的行高会有很大差异。我已经正确计算了每个单元格的行高,并且表格视图按其应有的方式执行。

但是,我想实现estimatedHeightForRowAtIndexPath: 以在消息很多的情况下提高性能。这样做的问题是它会影响scrollToRowAtIndexPath:atScrollPosition:Animated: 的滚动行为。

在我的viewWillAppear 生命周期方法中,我告诉表格视图向下滚动到最新消息(即底部消息),如果我不使用estimatedHeightForRowAtIndexPath:,它会表现良好,但只要我这样做似乎只有从此方法返回的值用于计算滚动位置,而我最终处于错误的位置。

是否可以在不影响滚动行为的情况下从使用 estimatedHeightForRowAtIndexPath: 的效率提升中受益?

【问题讨论】:

【参考方案1】:

UITableViewUIScrollView的子类所以方法

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

UIScrollView 可能会帮助你实现你想要的

【讨论】:

在我的例子中,为了让这个方法正常工作,我必须计算我的表格视图中所有行的组合高度,对吧?这不就像使用 heightForRowAtIndexPath: 而不使用 estimatedHeightForRowAtIndexPath: 一样昂贵吗? 是的,你是对的。但我认为只要您需要以编程方式滚动,就无法绕过计算。无论是自己计算在scrollRectToVisible 中,还是通过系统在scrollToRowAtIndexPath 中计算。 嗯,这就是我害怕的。伙计们,我必须想办法使计算尽可能高效:)

以上是关于使用估计的HeightForRowAtIndexPath 错误的滚动位置的主要内容,如果未能解决你的问题,请参考以下文章

用matlab估计ARMAX模型参数的问题

使用 Python 估计自相关

使用 mle() 估计自定义分布的参数

6.1. 概率密度估计

使用 fminsearch 进行参数估计

应用统计学参数统计-点估计与估计量的评价标准