【问题标题】:estimatedHeightForRowAt is not called on scroll滚动时不调用estimateHeightForRowAt
【发布时间】:2016-10-31 11:54:25
【问题描述】:

为什么当我们滚动UITableView时没有调用UITableViewDelegate协议的方法estimatedHeightForRowAt

方法estimatedHeightForRowAt只有在我们初始化UITableView的时候才会被调用。

【问题讨论】:

    标签: ios swift uitableview swift3


    【解决方案1】:

    只有在我们初始化 UITableView 时才会调用方法估计HeightForRowAt。

    正确。前面的所有行都会调用它,因此我们可以估计表格内容的整个高度。这正是它的用途。

    当您滚动并且新行即将出现时,这些现在是真正的行,其中包含真正的单元格,所以现在您必须提供 real 高度!

    【讨论】:

    • 如果我的数据源将包含 1000 个项目,它将重新计算它们的高度并在我们使用 UITableViewAutomaticDimension 时在 heightForRowAt 中重用它?
    • 您是否尝试使用不同高度的自定尺寸单元格?
    • 那你做错了。只需为表格本身设置估计行高,将表格行高设置为自动,不实现任何高度委托方法,让约束从内向外调整单元格大小。
    • @matt 我发现当在具有自定尺寸单元格的表格视图中使用具有很多约束的自动布局时,表格宽度的估计高度表现不佳,尤其是在具有快速滚动速率的旧设备上单元格高度的变化很大(例如 200 像素)。我摆脱明显下降的滚动性能(滞后、跳跃等)的唯一方法是实现 estimatedHeightForRowAt 并返回准确的估计值。
    • @mistahenry 没错。最快的方法是做我们在估计高度存在之前所做的事情:提前自己计算所有高度。
    猜你喜欢
    • 2018-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-02
    • 1970-01-01
    • 1970-01-01
    • 2013-01-03
    相关资源
    最近更新 更多