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

Six*_*cks 5 uitableview uilabel ios autolayout swift

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

在此输入图像描述在此输入图像描述

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

cell.questionLabel.preferredMaxLayoutWidth = cell.questionLabel.frame.width
cell.answerLabel.preferredMaxLayoutWidth = cell.answerLabel.frame.width
Run Code Online (Sandbox Code Playgroud)

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

self.faqTableView.rowHeight = UITableViewAutomaticDimension
self.faqTableView.estimatedRowHeight = 140.00
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

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

Bou*_*yan 2

在此输入图像描述

在此输入图像描述

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

cell.questionLabel.preferredMaxLayoutWidth = cell.questionLabel.frame.width
cell.answerLabel.preferredMaxLayoutWidth = cell.answerLabel.frame.width
self.faqTableView.estimatedRowHeight = 140.00
Run Code Online (Sandbox Code Playgroud)

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

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return UITableViewAutomaticDimension;
}
Run Code Online (Sandbox Code Playgroud)