多行标签在Xcode 9的表格视图单元格中显示额外的空白空间

时间:2017-09-19 11:31:52

标签: ios objective-c swift uitableview uilabel

我使用Autolayout在表格视图中显示了多行标签。一切都很好,但是单元格高度比标签尺寸大得多。例如,如果我的标签高度为100,则单元格高度应为100,因为我将heightForRowAtIndexPath作为标签高度返回,但其高度返回为150等

然后我尝试删除该标签的setPreferredMaxLayoutWidth,在这种情况下,该标签的最后一行没有显示(截断)。

2 个答案:

答案 0 :(得分:2)

使用

 mytableView.rowHeight = UITableViewAutomaticDimension
  mytableView.estimatedRowHeight = 100.0

而不是从heightForRowAtIndexPath返回高度。 如果标签高度是动态的,则设置所有侧面自动布局约束。将label&line; Lines属性设置为零。 如果你想要标签和单元格高度相同,那么将前导,尾随,顶部,底部约束设置为零而没有边距。

答案 1 :(得分:2)

最后通过在cellForRowAtIndex

中添加以下代码来解决该问题
    cell.bounds = CGRectMake(0, 0, CGRectGetWidth(tableView.bounds), 99999);
    cell.contentView.bounds = cell.bounds;
    [cell layoutIfNeeded];
    [cell.myLabel setPreferredMaxLayoutWidth:CGRectGetWidth(cell.myLabel.frame)];

点击here了解更多详情。