为什么我的UITableViewCell中的多行UILabel会在第一次加载时截断,但在滚动时会自行更正?

时间:2018-02-05 11:01:33

标签: ios swift uitableview autolayout uilabel

我的应用程序中有一个表格视图存在问题,并且想知道是否有人遇到过类似的问题。我在自定义tableviewcell中有2个标签 - questionLabelanswerLabel - 它们具有以下约束:

enter image description here enter image description here

在两个UILabel上,我将行数设置为0,使它们成为多行,并将preferredmaxLayoutWidth属性添加到两者中,如下所示:

cell.questionLabel.preferredMaxLayoutWidth = cell.questionLabel.frame.width
cell.answerLabel.preferredMaxLayoutWidth = cell.answerLabel.frame.width

根据其他StackOverflow建议,我在viewDidLoad()方法中也有以下内容:

self.faqTableView.rowHeight = UITableViewAutomaticDimension
self.faqTableView.estimatedRowHeight = 140.00

首次加载时,即使行设置为0,标签仍然会被截断,奇怪的是标签位置不一致。但是,当向下滚动屏幕然后返回到顶部时,标签会自动校正,布局也很完美。见下面的截图:

enter image description here

之前有没有人遇到过这个问题,如果有的话,你可以指出我正确的方向。我不确定这是我未能设置的,还是我的自动布局限制问题。

1 个答案:

答案 0 :(得分:2)

enter image description here

enter image description here

添加这样的约束。删除以下行

cell.questionLabel.preferredMaxLayoutWidth = cell.questionLabel.frame.width
cell.answerLabel.preferredMaxLayoutWidth = cell.answerLabel.frame.width
self.faqTableView.estimatedRowHeight = 140.00

将UILabel的行数设置为零并实现以下方法

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return UITableViewAutomaticDimension;
}