我已经阅读了多个有关此问题的帖子,但尚未找到解决方案。
我正在制作一个类似聊天的应用程序
该应用有一个 TableView,其中包含动态高度单元格。
单元格由 View 和其中的多行标签组成。
如果标签的字符数超过>250,则会缩短并以“...查看更多”结尾
现在的问题是有时标签会被切断。
我对标签的换行
设置进行了一些尝试,将其更改为字符换行后,标签显示了其完整文本。
左图:字符换行
- - - 右图: 自动换行
(我需要这个)
我意识到,如果我将标签的宽度或 View 的宽度设置为固定大小,那么问题就得到解决:所以也许问题的根源在于气泡 View 的宽度主导约束:
Align leading to Superview
Constant: 0
Priority: 1000
Multiplier: 0.25
(这是必要的,以便气泡 View 最大扩展至父 View 的 75%)
我为此创建了一个 GitHub 存储库:
https://github.com/krptia/chatBubbleTest
请帮忙!
有人吗?
最佳答案
解决方案
我发现如果我将气泡 View 的前导常量设置为以下内容:
Align leading to Superview
Constant: 0
Priority: 1000
Multiplier: 0.25
为了将最大宽度设置为75%,里面的标签换行不正确。
所以我删除了主要约束,而是通过纵横比最大化宽度!
如果我使用宽高比 2:3
然后我获得了相同的结果,但标签包装正确!!
耶
解决方案2.0
好的,现在我发现气泡 View 的前导约束的第二项(SuperView.Trailing)是相对于边距
取消选中它后,问题得到解决,所以我不必使用宽高比!耶
但要注意
因为使用换行:自动换行
也会导致一些问题。
有时它会尝试将文本分成新行(至少 2 个单词),但如果重复使用单元格,则应用程序可能会计算出错误的 View 高度。
第一张图片:自动换行
- - - - - - - 第二张图片:剪辑
也许这个问题可以用layoutIfNeeded()来解决,或者我不知道。剪辑对我来说很好
更新(2019.03.27)
嗯..我意识到问题仍然出现...我不明白为什么。
还在想办法..
关于swift - TableView计算动态宽度和高度标签的高度错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53982102/