UITableView seperatorInsets 不准确或者我在寻找其他东西?

UITableView seperatorInsets are not accurate or am I looking for something else?

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

我有一个 uitable 视图,其中包含我正在尝试使用 heightForRowAtIndexPath 调整大小的单元格。我需要单元格根据它们包含的文本调整大小,所以我使用属性字符串 boundingRectWithSize,传入 table 的宽度和 window 的高度,并使用出列的正确字体单元格和 UsesLineFragmentOrigin.

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

当我打开视图调试时,我什至可以看到这个偏差"show view frames."内容视图的左右两侧有相等的偏移量。

但是,我不知道如何在方法 heightForRowAtIndexPath 中访问此偏移量。从视图调试中,我知道 table 和 contentview 的宽度之间的差异是 40,但我不想对该值进行硬编码。我对它所在位置的最佳猜测是 UITableView 的 属性,称为 "separatorInset",它是一个 edgeInset,它具有 "left" "right" "up" 和 "down"方面。但是,当我检查 属性 时,除了 "left" 是 20.

之外所有维度都是零

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

然而,这让我很困扰,因为我希望通过的是宽度 - "left" - "right" 并且仅使用 left*2 或多或少相当于硬编码 40.

我是否错过了真正的 属性,它会告诉我左右偏移是什么,或者 "separatorInsets" 有问题,或者 "left" "right" "up" "down" 表示明显以外的东西? 谢谢。

我觉得很愚蠢,但我要找的术语是 "margin." 我一直在找一个叫做偏移量的东西,但在通用术语中我想到的是边距。

一开始我可能考虑过这个,但后来在查看 UITableView 的文档时,我没有看到任何 属性 中有那个词。

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

在考虑是 tableview 还是 tableviewcell 甚至是 cell 的 contentview 是否可以控制这个问题后转了几圈,我相信很容易混淆所以对于任何想知道的人来说,这种事情是由 属性 "layoutMargins" 在 UITableView 上。

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

似乎对于UITableViewCell,这个默认为YES。我想有些事情要记住。