TableView为动态的宽度和高度标签计算错误的高度

时间:2018-12-30 22:57:02

标签: swift tableview cell

我已经阅读了多个有关此主题的线索,但尚未找到解决方案。

我正在制作类似聊天的应用程序


该应用程序具有 TableView ,其中具有动态高度单元格

一个单元格由一个视图和一个多行标签组成。

如果标签上的字符超过> 250 ,则会以“ ...更多内容”

结尾

现在的问题是标签有时会被剪掉。

我在标签的Line Break设置下玩了一点,然后将其更改为 Character Wrap (字符包)。

左图Character Wrap---右图: Word Wrap(我需要这个)

enter image description here 如右图所示,“ Bt ... See More”被切断。.


我意识到,如果将标签的宽度视图的宽度设置为固定大小,那么问​​题就可以解决:因此,问题的根源可能是气泡视图的前导约束:

Align leading to Superview
Constant: 0
Priority: 1000
Multiplier: 0.25

(这是必需的,这样气泡视图才能最大扩展到超级视图的75%)

我为此做了一个GitHub存储库:

https://github.com/krptia/chatBubbleTest

请帮助!


有人吗?

1 个答案:

答案 0 :(得分:1)

解决方案

我发现,如果我设置气泡视图的前导常数,则以下内容:

Align leading to Superview
Constant: 0
Priority: 1000
Multiplier: 0.25

为了将最大宽度设置为75%,内部的标签不能正确缠绕。

所以我删除了前导约束,取而代之的是我通过宽高比最大化宽度!

如果我使用纵横比 2:3

然后我获得了相同的结果,但是标签正确包裹了!

解决方案2.0

好的,现在我发现气泡视图的前导约束的第二项(SuperView.Trailing)是相对于保证金

取消选中它后,问题得到解决,因此我不必使用纵横比!是的

注意事项

因为使用Line Break: Word Wrap也会引起一些问题。

有时它会尝试将文本分成新行(至少2个字),但是如果单元格被重用,则应用可能会为视图计算错误的高度。


第一张图片Word Wrap-------第二张图片Clip

enter image description here

也许这个问题可以用layoutIfNeeded()解决,或者我不知道。剪辑对我来说很好

更新(2019.03.27)

嗯..我意识到问题仍然存在...我不明白为什么。

仍在尝试找出答案。