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

标签 swift tableview cell

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

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


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

单元格由 View 和其中的多行标签组成。

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


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

我对标签的换行设置进行了一些尝试,将其更改为字符换行后,标签显示了其完整文本。

左图:字符换行 - - - 右图: 自动换行(我需要这个)

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


我意识到,如果我将标签的宽度 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 高度。


第一张图片:自动换行 - - - - - - - 第二张图片:剪辑

enter image description here

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

更新(2019.03.27)

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

还在想办法..

关于swift - TableView计算动态宽度和高度标签的高度错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53982102/

相关文章:

ios - 如何每天更新一个标签文本,以便用户每天获得另一个预定义文本?

iphone - 当图像加载到每个单元格中时,如何提高表格 View 中的滚动速度?

ios - TableViews 不适用于 TabBarController Swift

algorithm - 将基于单元格的形状划分为最少量矩形的最佳方法

ios - 使用 swift 自定义 TableViewCell

ios - 调用了错误的通用重载函数

swift - 使用 RxSwift 重播最后一个请求

swift - 无法在 Swift 数组扩展中使用包含

ios - 计算 View 数量并将其动态添加到 tableView 行 swift 3?

java - Gwt CellTree isLeaf() 问题