具有多个标签的自定义单元格不显示多行标签

时间:2015-08-23 11:30:27

标签: ios swift uitableview xcode6 uistoryboard

我的静态表格视图中有三个标签,中间标签应该是多行标签。

我在viewDidLoad()

中设置了这两行
self.tableView.estimatedRowHeight = 130.0
self.tableView.rowHeight = UITableViewAutomaticDimension

故事板看起来像这样

enter image description here

以下是每个子视图的约束

顶部标签,中间标签,底部标签,按钮

enter image description here

我还将中间标签的行数设置为0.但是它只显示一行而不是多行。我想它必须与内容拥抱或内容压缩优先级有关,或者因为我正在使用带有静态单元格的UITableViewController

更新

如果我将中间标签的垂直压缩电阻优先级更改为751并将垂直内容拥抱优先级更改为250,则标签显示多行,但单元格不会调整大小,因此顶部和底部标签现在位于单元格之外。

更新2

我刚刚创建了一个示例项目,结果表明它可以按预期使用动态单元格,但不能使用静态单元格。您可以在此处下载示例项目:https://dl.dropboxusercontent.com/u/67692950/ResizingCell.zip

4 个答案:

答案 0 :(得分:5)

我克隆了你的示例项目。我认为问题是你不需要设置UITableViewCell的高度。

这是一个简单的解决方案。

enter image description here

·在表视图单元格中设置行高“默认”。(未选中自定义)

在这种情况下,它有效。

下载我在此处实施的示例项目: https://www.dropbox.com/s/w8q6ov9qjfxu1l3/ResizingCell.zip?dl=0

但另一种方法是你从UILabel的高度计算UITableViewCell的高度。

如果您更复杂地定制细胞,最好将细胞分离为自定义细胞。

答案 1 :(得分:2)

首先,打开故事板,将tableview行高设置为100,取消选中tableview单元格的自定义行高,当前值为100.

其次,就像@DBoyer所说,打电话给layoutIfNeeded。如果你看到“无法同时满足约束,将尝试通过打破约束X来恢复”,将X的优先级降低到999.我认为当你获得单元格时,警告可能与此有关,单元格框架是{{1} }。

CGRectZero

答案 2 :(得分:0)

您需要在设置多行标签文字后在单元格上调用layoutIfNeeded或设置标签preferredMaxLayoutWidth

答案 3 :(得分:0)

对标签使用aspectRatio约束。它的目的是根据需要改变宽度和高度。这将有助于