【问题标题】:Wrong UITableViewCell height for some cells at first loading首次加载时某些单元格的 UITableViewCell 高度错误
【发布时间】:2020-04-02 18:34:43
【问题描述】:

我正在使用UITableViewAutomaticDimension 来计算我的表格视图单元格的高度。这对我来说可以。但是对于某些单元格,返回的高度是 44,而不是动态计算高度。但是在向上滚动回看同一个单元格时,高度会完美地重新计算。所以我想我没有任何错误的约束,因为在我手动滚动并更正所有单元格高度之后,之后不会显示约束破坏警告。

编辑

下面给出的是图像的屏幕截图(裁剪时弄乱了,但可以从个人资料图像中看到问题。)。第一个像元高度计算正确。但其余的都是错误的。

【问题讨论】:

  • try reloading the tableview in view 确实出现了。
  • @SujithChandran - 最初我遇到的问题是没有一个单元格达到正确的高度。然后我在 viewdidappear 中重新加载了我的 tableview。然后最初可见的单元格获得正确的高度。但是某些单元格,例如 10 行表格的单元格位置 6-8,不能正确计算高度。但在单元重用时,问题已得到纠正。
  • 这可能对您有所帮助:- programmingcrew.in/2015/09/…

标签: objective-c uitableview nslayoutconstraint ios-autolayout uitableviewautomaticdimension


【解决方案1】:

我添加了以下内容,一切正常。

(CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return UITableViewAutomaticDimension;
}

【讨论】:

  • 您应该在estimatedHeight 方法中返回一个实际数字。不要在这里返回 automaticDiemnsion。它用作布局滚动视图的粗略第一遍。如果您的单元格至少有 100 点高,则返回 100。
  • @Fogmeister - 上面的代码对我有用。我之前给出了 500 作为estimateHeight。但是我得到了高度为 44 的单元格并打破了我的限制。因此,如果我不能将自动尺寸写入估计高度,我应该怎么做才能解决这个问题?请提出其他解决方案。
  • 估计高度可以是任意数字。只要您正确设置了约束,它就不会影响实际的单元格高度。就像我说的,这是一个让表格视图了解内容大小的数字。
  • @Fogmeister - 我明白了。但是当我将估计的行高设置为任何值(我之前使用过 500)时,我遇到了由 iOS 计算的错误单元格高度。但是当我将自动尺寸(这是我所做的唯一修改)返回到estimatedHeightForRowAtIndexPath: 时,高度计算工作正常。
  • 这对我有用,使用 XIB 使用 Eureka 单元调试此问题。花了 30 多个小时进行调试。你的回答毫无意义,但它奏效了。
【解决方案2】:

在我的情况下,layoutMarginsGuide 顶部和底部锚点有问题。我将它用于单元格子视图并为其子视图设置preservesSuperviewLayoutMargins = true。这导致系统第一次尝试使用systemLayoutSizeFitting计算单元格高度时出错。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-14
    • 2018-09-14
    • 2015-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-14
    • 1970-01-01
    相关资源
    最近更新 更多