【问题标题】:UITableView seperatorInsets are not accurate or am I looking for something else?UITableView seperatorInsets 不准确还是我在寻找其他东西?
【发布时间】:2023-03-24 10:40:01
【问题描述】:

这似乎是一个非常基本的操作,但过于复杂。

我有一个带有单元格的 uitableview,我正在尝试使用 heightForRowAtIndexPath 调整其大小。我需要根据单元格包含的文本调整单元格大小,因此我使用属性字符串 boundingRectWithSize,传入表格的宽度和窗口的高度,并使用来自出队单元格和 UsesLineFragmentOrigin 的正确字体。

在许多情况下,这会切断最后一行文本,我认为这是由于单元格的内容视图和表格视图边缘之间的偏移,因此当我给 boundingRectWithSize 表格的宽度时,它会错误地计算高度。

当我打开视图调试“显示视图框架”时,我什至可以看到这个问题。内容视图的左侧和右侧的偏移量相等。

但是,我无法弄清楚如何在方法 heightForRowAtIndexPath 中访问此偏移量。从视图调试中,我知道表格和内容视图的宽度之间的差异是 40,但我不想硬编码该值。我对它所在位置的最佳猜测是 UITableView 的一个名为“separatorInset”的属性,它是一个具有“左”“右”“上”和“下”尺寸的 edgeInset。但是,当我检查该属性时,所有维度都为零,除了“左”为 20。

因为我知道差异是 40,如果我将宽度减去“left”*2 传递给 boundingRectWithSize,那么我的所有测试字符串的大小都是正确的。

但是,这让我很困扰,因为我希望传递的是宽度 - “左” - “右”,并且仅使用 left*2 或多或少相当于硬编码 40。

我是否错过了能够告诉我左右偏移量是多少的真实属性,或者“separatorInsets”是否存在错误,或者“左”“右”“上”“下”是否表示明显之外的其他东西? 谢谢。

【问题讨论】:

    标签: ios uitableview uikit


    【解决方案1】:

    我觉得自己很愚蠢,但我正在寻找的术语是“保证金”。我一直在寻找一种叫做偏移量的东西,但一般来说,我想到的是边距。

    我最初可能已经考虑过这一点,但是在查看 UITableView 的文档时,我没有看到任何带有该词的属性。

    但是,UIView 当然有一个名为“layoutMargins”的属性,而这是我找不到的。

    在考虑了 tableview 或 tableviewcell 甚至单元格的 contentview 是否可以控制这个我相信很容易混淆所以对于任何想知道的人来说,这种事情是由属性“layoutMargins”控制的" 在 UITableView 上。

    但是,我仍然有点困惑,因为 UITableViewCell 有一个名为 preservesSuperviewLayoutMargins 的属性(也来自 UIView),它应该默认为 NO,在这种情况下,单元格的布局应该覆盖 tableview 的布局。

    似乎对于 UITableViewCell,这默认为 YES。我猜要记住一些事情。

    【讨论】:

      猜你喜欢
      • 2011-08-19
      • 2017-05-22
      • 1970-01-01
      • 1970-01-01
      • 2015-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-10
      相关资源
      最近更新 更多