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

问题描述 投票:1回答:1

我已经阅读了多篇关于此问题的帖子,但我还没有找到任何解决方案。

我正在做一个类似聊天的应用程序


该应用程序有一个TableView,其中包含动态高度单元格。

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

如果标签的字符数超过> 250,则会缩短其结尾“...查看更多”


现在的问题是,有时标签会被切断。

我用标签的Line Break设置玩了一下,在将它改成Character Wrap之后,标签显示了它的全文。

左图:qazxsw poi - - - 右图:qazxsw poi(我需要这个)

Character Wrap正如您在右图所示,“Bt ... See More”被切断了..


我意识到如果我将标签的宽度或视图的宽度设置为固定大小,那么问​​题就会得到解决:所以问题的根可能是在气泡视图的主要约束中:

Word Wrap

(这是必需的,以便气泡视图最大扩展到superview的75%)

我为此做了一个GitHub回购:

enter image description here

请帮忙!


任何人?

swift tableview cell
1个回答
1
投票

SOLUTION

我想通过如果我设置气泡视图的前导常数如下:

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

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

所以我删除了前导约束,而不是通过纵横比最大化宽度!

如果我使用宽高比2:3

然后我实现了相同的结果,但标签包装正确!

夏天

SOLUTION 2.0

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

取消选中后,问题得到解决,所以我不必使用宽高比!好极了

BUT PAY ATTENTION

因为使用https://github.com/krptia/chatBubbleTest也会导致一些问题。

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


第一张图片:Align leading to Superview Constant: 0 Priority: 1000 Multiplier: 0.25 - - - - - - - 第二张图片:Line Break: Word Wrap

Word Wrap

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

UPDATE (2019.03.27)

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

还是想弄清楚..

© www.soinside.com 2019 - 2024. All rights reserved.