我有一个带自定义单元格的UITableView(具有自动高度)。在这些单元格中,我有两个UILabel,一个标题和一个正文。我已经将标题设置为最多有3行,并且主体具有无限的行。
当加载单元格(通过tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
)时,我将标题设置为"等待数据"以及#34; Hello world"。此时,我发送了一些网络请求以获取一些信息,当请求返回时,我会更新标题UILabel。
然而,似乎当新文本导致UILabel的高度发生变化时(例如文本需要显示2或3行),会发生奇怪的事情。奇怪的是,要么标题增长并压缩身体标签,要么标题不会增长,而是保持一行,椭圆化/截断。
如果我向外滚动并向后滚动,导致重新创建单元格,则不会发生此问题。我假设这是因为我缓存网络响应,并且在创建单元格时,如果响应已被缓存,我直接将标题设置为响应。基于此,我认为在修改标题标签时可能不会再次调用autolayout。
初始细胞:
网络响应后:
标题未包含在行中的情况:
标题包含在行中但压缩详细信息标签
的情况在两个结果单元格中,标题还扩展/压缩了时间标签。
当发生这种情况时,我是否应该调用某种方法来重新布局我的细胞?我的约束可能不正确吗?
答案 0 :(得分:1)
将此设置为您的UILabel:
yourUILabel.numberOfLines=0;
yourUILabel.adjustsFontSizeToFitWidth=YES;
立即尝试:)
答案 1 :(得分:0)
如果您使用vfl
来管理此类标签的垂直约束:
V:|-[myLable]-|
将其更改为:
V:|[mylabel]|