【问题标题】:TableView calculates wrong height for dynamic width&height labelTableView 为动态宽度和高度标签计算错误的高度
【发布时间】:2018-12-30 22:57:01
【问题描述】:

我已经阅读了多个关于此的主题,但我还没有找到解决方案。

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


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

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

如果标签的字符数超过 >250,它会被缩短并以 "... 查看更多"

结尾

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

我玩了一下标签的Line Break 设置,将其更改为Character Wrap后,标签显示其全文。

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

如右图所示,“Bt... See More”被切断了..


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

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

(这是为了让气泡视图最大扩展至父视图的 75%)

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

https://github.com/krptia/chatBubbleTest

请帮忙!


有人吗?

【问题讨论】:

  • 我建议您使用手动计算以获得最佳性能,或者您可以使用高缓存机制来获得平均性能
  • 如果您有解决方案,请将其作为答案发布,而不是作为问题的一部分。或者删除问题,这样它就不会继续坐在这里了。
  • 如果固定宽度会发生什么?目前它们具有可变宽度。将其设置为固定宽度只是为了尝试。
  • @Fogmeister 我试过了,为视图或标签设置一个固定宽度可以解决问题。

标签: swift tableview cell


【解决方案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

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

更新(2019.03.27)

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

还在想办法..

【讨论】:

    猜你喜欢
    • 2016-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-21
    • 1970-01-01
    • 2015-09-22
    • 1970-01-01
    • 2018-05-05
    相关资源
    最近更新 更多