【问题标题】:Multiline Label displaying extra empty spaces in table view cell in Xcode 9多行标签在 Xcode 9 的表格视图单元格中显示额外的空格
【发布时间】:2018-02-28 04:10:06
【问题描述】:
我使用自动布局在表格视图中显示多行标签。一切都很好,但单元格高度比标签大小大得多。例如,如果我的标签高度为 100,则单元格高度应为 100,因为我返回 heightForRowAtIndexPath 作为标签高度,但其高度返回为 150 等等。
然后我尝试删除该标签的setPreferredMaxLayoutWidth,在这种情况下,该标签的最后一行没有显示(截断)。
【问题讨论】:
标签:
ios
objective-c
swift
uitableview
uilabel
【解决方案1】:
使用
mytableView.rowHeight = UITableViewAutomaticDimension
mytableView.estimatedRowHeight = 100.0
而不是从 heightForRowAtIndexPath 返回高度。
如果您的标签高度是动态的,则设置所有侧面自动布局约束。将标签的 Lines 属性设置为零。
如果您希望标签和单元格高度相同,则将前导、尾随、顶部、底部约束设置为零而没有边距。
【解决方案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了解更多详情。