当UILabel的身高增长时,视野不会移动

时间:2016-01-09 05:01:16

标签: ios swift autolayout uikit

我有一个带自定义单元格的UITableView(具有自动高度)。在这些单元格中,我有两个UILabel,一个标题和一个正文。我已经将标题设置为最多有3行,并且主体具有无限的行。

当加载单元格(通过tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell)时,我将标题设置为"等待数据"以及#34; Hello world"。此时,我发送了一些网络请求以获取一些信息,当请求返回时,我会更新标题UILabel。

然而,似乎当新文本导致UILabel的高度发生变化时(例如文本需要显示2或3行),会发生奇怪的事情。奇怪的是,要么标题增长并压缩身体标签,要么标题不会增长,而是保持一行,椭圆化/截断。

如果我向外滚动并向后滚动,导致重新创建单元格,则不会发生此问题。我假设这是因为我缓存网络响应,并且在创建单元格时,如果响应已被缓存,我直接将标题设置为响应。基于此,我认为在修改标题标签时可能不会再次调用autolayout。

初始细胞:

enter image description here

网络响应后:

标题未包含在行中的情况:

enter image description here

标题包含在行中但压缩详细信息标签

的情况

enter image description here

在两个结果单元格中,标题还扩展/压缩了时间标签。

当发生这种情况时,我是否应该调用某种方法来重新布局我的细胞?我的约束可能不正确吗?

2 个答案:

答案 0 :(得分:1)

将此设置为您的UILabel:

 yourUILabel.numberOfLines=0;
 yourUILabel.adjustsFontSizeToFitWidth=YES;

立即尝试:)

答案 1 :(得分:0)

如果您使用vfl来管理此类标签的垂直约束:

 V:|-[myLable]-|

将其更改为:

 V:|[mylabel]|