【发布时间】: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