TableViewCell 中的 UILabel 在不应该扩展高度时

Posted

技术标签:

【中文标题】TableViewCell 中的 UILabel 在不应该扩展高度时【英文标题】:UILabel in TableViewCell expands height when it shouldn't 【发布时间】:2015-03-09 14:52:27 【问题描述】:

我在一个可以有多行文本的 TableViewCell 中有 UILabel。我正在使用自动布局并期望单元格适当地扩展它的高度。它在大多数情况下都可以正常工作,但是当 UILabel 中的文本几乎在标签的宽度处时会发生一些奇怪的事情。标签似乎过早地扩大了它的高度。

更新:我已将示例项目上传到 github: https://github.com/fwaddle/TestBadHeight

如下所示,第一个单元格不应大于第二个单元格。

顶部标签约束:

子标签约束:

信息按钮约束

【问题讨论】:

委托类提供的单元格height呢? 我在我的应用程序中看到了一些非常相似的东西,而且它只发生在 ios7 模拟器上(我没有 iOS7 的设备了)。 iOS8(设备或模拟器)上的相同约束代码,它工作正常。 Holex:我没有指定高度,因为我正在使用 UIDynamics 自动单元格高度功能。 Koen:我在模拟器中的 8.1 和设备上运行它,结果相同。 【参考方案1】:

您配置标签的方式存在一些问题。第一件事是您将 SublLabelContent Hugging Priority 修改为 252 而不是默认的 251。这会导致 UILabel 的默认行为发生变化(这意味着它不会调整大小以完全适合其内容)。

一旦你修改它,你的约束就会有一些冲突,因为它不能同时满足所有的静态单元格高度和定义单元格高度的垂直约束。

因此,您将需要更改情节提要中单元格的大小以使其适合这种特殊情况(我尝试过并且正确的高度,以满足约束为 73)或降低优先级对于其中一个约束(假设从SubLabelContentView 的底部约束)。 结果应该是相同的,并且应该正确计算您的标签高度。

希望这能解决您的问题。祝你好运!

【讨论】:

感谢 Catalina,您确实是正确的。我真的应该更好地理解压缩和拥抱的优先级。【参考方案2】:

UILabel 中有 sizeToFit 吗?这可能会导致单元格调整大小以适合数字 5 并且不能满足您的尾随约束。

【讨论】:

以上是关于TableViewCell 中的 UILabel 在不应该扩展高度时的主要内容,如果未能解决你的问题,请参考以下文章

使用 tableViewCell 高度调整 UILabel 的高度

自动布局:在 TableViewCell 中排列两个 UILabel

在自定义 TableViewCell 中动态更改 UILabel 框架

以编程方式将 UILabel 添加到自定义 tableViewCell

如何在目标 c 中的视图控制器上获取自定义 TableViewCell 值

以编程方式并排添加不同宽度的 UILabel