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

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

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

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

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

【问题讨论】:

    标签: ios uitableview heightforrowatindexpath


    【解决方案1】:

    UITableViewUIScrollView的子类所以方法

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

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

    【讨论】:

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