UITableView seperatorInsets不准确或我在寻找别的东西?

时间:2015-06-27 14:29:00

标签: ios uitableview uikit

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

我有一个关于单元格的uitableview,我正在尝试使用heightForRowAtIndexPath调整大小。我需要基于它们包含的文本调整单元格大小,因此我使用属性字符串boundingRectWithSize,传入表格的宽度和窗口的高度,并使用出列单元格中的正确字体和UsesLineFragmentOrigin。

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

当我打开视图调试"显示视图帧时,我甚至可以看到这种情况。"内容视图的左侧和右侧有相同的偏移量。

但是,我无法弄清楚如何在方法heightForRowAtIndexPath中访问此偏移量。从查看调试,我知道表的宽度和contentview之间的差异是40但我不想硬编码该值。我最好的猜测是它所在的位置是UITableView的一个属性叫做#34; separatorInset"这是一个edgeInset,它有" left" "右" "向上" " down"尺寸。但是,当我检查该属性时,所有维度都为零,除了" left"这是20。

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

然而,这让我感到困扰,因为我期望通过的是宽度 - "左" - "对"并且只使用左* 2或多或少的数量来进行硬编码40。

我是否错过了可告诉我左右偏移是什么或是什么的不动产?" separatorInsets"窃听或做"离开" "右" "向上" "向下"是否意味着明显的东西? 感谢。

1 个答案:

答案 0 :(得分:0)

我觉得很愚蠢,但我一直在寻找的是"保证金。"我正在寻找一种称为偏移的东西,但在通用术语中我所想的是一个边缘。

我可能最初考虑过这个问题,但是在查看UITableView的文档时,我没有看到任何带有该字的属性。

然而,UIView当然有一个名为" layoutMargins"这是我找不到的。

考虑到tableview或tableviewcell甚至是单元格的内容视图是否可以控制这一点后绕几次盘旋我相信很容易混淆所以对于任何想知道的人来说,这种事情都是由属性控制的&# 34; layoutMargins"在UITableView上。

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

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