具有自动布局问题的自定义UITableViewCell

时间:2015-09-30 00:44:29

标签: ios uitableview nslayoutconstraint

我有一个自定义UITableViewCell,如下所示:

enter image description here

我的图片有一个固定的宽度和高度,我的描述标签填充剩余的宽度,并根据其内容有一个自动高度。

这会产生一个问题,因为根据描述标签的高度,从来没有固定的锚点来附加我的单元格的底部。

所以,目前我有一个从图像底部到单元格边缘底部的约束,关系为> = 0.同样,我在描述标签的底部有一个约束关系> = 0。

然而,当我运行我的应用时,自动布局总是使用图像约束来计算底部而不是描述标签约束,即使描述标签更高时也是如此。这会剪辑我的标签。

我觉得这可能与内容拥抱和抗压缩性有关,但两个视图分别为251和750。 (我玩弄了这些但没有运气 - 我不完全理解它们)

当描述小于图像时,如何成功使用自动布局将单元格的底部附加到图像?反之亦然?

1 个答案:

答案 0 :(得分:0)

您可以从标签中删除底部约束,并将垂直内容拥抱和垂直内容压缩设置为1000(必需)。这基本上告诉标签它可以具有无限的垂直高度,只要它拥抱内容。问题是,如果描述很长,它将通过单元格底部,导致文本被切割为中线。为避免这种麻烦,请将标签的最大行号和换行符模式设置为"截断尾部"。

这一切都假设你不介意描述文字被削减。 如果您希望单元格的高度根据其不同故事的内容动态变化。

对于动态单元格高度,将图像和描述标签的底部约束更改为==然后将这两个方法添加到viewController:

-(CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath{
    return  100; // min cell height
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    return UITableViewAutomaticDimension;
}