【发布时间】:2015-07-21 08:58:51
【问题描述】:
我遇到了使用自动布局自动调整单元格大小的问题。我的目标是实现一个看起来像这样的表格:
| Title_label (time) $price |
| |
|Some long description. More |
|description. |
| |
如果标题很长,它应该是这样的:
| This title is (time) $price |
| really long |
| |
|Some long description. More |
|description. |
| |
所以当标题变大时,只要在时间和价格之间有 8 个点的空间,它就会将时间标签向右推。如果它更大,它应该换到下一行。
我在表格视图之前使用了自调整大小的单元格,但那里只有一个扩展标签,而不是两个。
我已经实现了行的自动高度:
self.tableView.rowHeight = UITableViewAutomaticDimension
self.tableView.estimatedRowHeight = 100
这就是我的约束的样子:
| 8px
|8px title 8px time >=8px price|
| 8px |
|8px description 8px|
| 8px |
价格时间和标题之间也有顶部对齐。
我已将标题和描述的行数设置为 0。 我已将时间和价格的压缩阻力设置为 1000(因为标题与它们重叠)。
但是标题标签不会换行到下一行。它以....结尾。更多的是描述标签也太小了。当我滚动表格时,描述的高度是固定的。
我尝试在返回单元格之前添加 cell.layoutIfNeeded()。然后单元格布局变得混乱(标题被剪裁)但是当我滚动电视时一切正常。
有什么想法吗?
编辑: 这是因为标题标签在其他标签旁边,它不知道什么时候应该换行?
我试过了
override func layoutSubviews() {
self.nameLabel.preferredMaxLayoutWidth -= (durationLabel.frame.width + priceLabel.frame.width + 16)
super.layoutSubviews()
}
告诉标题标签它的最大宽度是多少,但它搞砸了。
【问题讨论】:
标签: ios uitableview