具有自动布局的 UITableViewCell 中的 UILabel 高度错误

2024-05-19

我有一个UITableView单元格的固定高度为 100 点。这些单元格是在 xib 文件中创建的,该文件使用 3 个约束来固定UILabel到单元格的左、右和上边缘contentView。标签的垂直拥抱优先级设置为 1000,因为我希望单元格的高度尽可能小。

当 xib 文件中单元格的宽度设置为 320 点(与 iPhone 上 tableView 的宽度相同)时,自动布局将按预期工作。但是,当我将单元格的宽度设置为小于 320 点时,我得到了意想不到的结果。 (我想在具有不同宽度的表视图中使用相同的单元格,例如在通用应用程序中)

例如:当我将宽度设置为 224 点并为标签指定一个在该宽度下占用 2 行的文本时,标签的高度将增加以适应 2 行,但是当单元格大小调整为 320 点以适应时对于该宽度的 tableView,文本仅占用 1 行,但标签的高度仍为 2 行。

我在 GitHub 上放了一个示例项目来演示该问题:https://github.com/bluecrowbar/CellLayout https://github.com/bluecrowbar/CellLayout

有没有办法使UILabel总是调整大小以容纳其文本内容?


在单元格子类中添加它是有效的:

- (void)layoutSubviews
{
    [super layoutSubviews];
    [self.contentView layoutIfNeeded];
    self.myLabel.preferredMaxLayoutWidth = self.myLabel.frame.size.width;
}

我发现这个http://useyourloaf.com/blog/2014/02/14/table-view-cells-with-variing-row-heights.html http://useyourloaf.com/blog/2014/02/14/table-view-cells-with-varying-row-heights.html.

更新1:这个答案是针对 iOS 7 的。我发现自 iOS 8 以来表视图单元格中的自动布局非常不可靠,即使对于非常简单的布局也是如此。经过大量的实验后,我(大部分)回到手动布局和手动计算单元格的高度。

更新2:我在 iOS 9 上进行了一些测试,看来UITableViewAutomaticDimension终于如宣传的那样工作了。耶!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有自动布局的 UITableViewCell 中的 UILabel 高度错误 的相关文章

随机推荐