我的静态表格视图中有三个标签,中间标签应该是多行标签。
我在viewDidLoad()
self.tableView.estimatedRowHeight = 130.0
self.tableView.rowHeight = UITableViewAutomaticDimension
故事板看起来像这样
以下是每个子视图的约束
顶部标签,中间标签,底部标签,按钮
我还将中间标签的行数设置为0.但是它只显示一行而不是多行。我想它必须与内容拥抱或内容压缩优先级有关,或者因为我正在使用带有静态单元格的UITableViewController
。
更新
如果我将中间标签的垂直压缩电阻优先级更改为751并将垂直内容拥抱优先级更改为250,则标签显示多行,但单元格不会调整大小,因此顶部和底部标签现在位于单元格之外。
更新2
我刚刚创建了一个示例项目,结果表明它可以按预期使用动态单元格,但不能使用静态单元格。您可以在此处下载示例项目:https://dl.dropboxusercontent.com/u/67692950/ResizingCell.zip
答案 0 :(得分:5)
我克隆了你的示例项目。我认为问题是你不需要设置UITableViewCell的高度。
这是一个简单的解决方案。
·在表视图单元格中设置行高“默认”。(未选中自定义)
在这种情况下,它有效。
下载我在此处实施的示例项目: 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约束。它的目的是根据需要改变宽度和高度。这将有助于