无法将原型单元格的高度设置为故事板中的约束

时间:2016-04-12 04:44:27

标签: ios xcode uitableview autolayout

如何使用故事板为原型单元格的高度添加约束?

在下面的第一个屏幕截图中,我使用了故事板的“重置为选定约束”来根据画布自动设置它们。我在视图控制器级别和视图级别都尝试过它。但结果在每种情况下都是相同的 - 它只添加了一些约束,如截图中所示,当代码运行时,蓝色单元格显示的高度与红色单元格相同。)

enter image description here

如果我现在尝试为单元格的高度添加一个额外的显式约束,它将不会让我 - 该选项显示为灰色。

如果我删除所有约束并尝试手动添加它们,添加它们的选项仍然被禁用 - 为什么?请参阅下面的屏幕截图作为示例 如果我改为选择内容视图以将约束设置为相同,即设置它们的能力被禁用,而不是像屏幕截图中那样选择headerCall。

我只是想添加原型单元格,其中一种类型表示一个较窄的节头,另一种类型代表一个更宽的数据内容单元格,但代码并没有明显为什么我不能。 (我没有类似的问题设置任何其他视图控制器/视图的约束,只有这些原型单元格。)

视图控制器中没有代码设置任何高度或约束等。它实际上是空的,我创建它只是为了重新创建问题。

enter image description here

3 个答案:

答案 0 :(得分:2)

实际上,约束不应直接应用于UITableViewCell的内容视图,因为它们已经充当动态包装器并根据其子视图调整其高度。

尝试将子视图添加到内容视图,并为该子视图设置高度约束。同时将新子视图的所有方面都固定在内容视图上。

如果你期望来自单元格的静态高度,那么请覆盖下面的代码并使你的viewController实现UITableViewDelegate:

override func tableView(tableView: UITableView!, heightForRowAtIndexPath indexPath: NSIndexPath!) -> CGFloat

或者,如果您希望从刚刚应用于内容视图子视图的高度约束计算单元格高度,则使用:

 self.tableView.rowHeight = UITableViewAutomaticDimension;

答案 1 :(得分:0)

我认为我们无法为UITableViewCell设置约束。只能以编程方式设置约束。你可以写

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
 {
    //...
 }

在这里,您可以为不同的行提供两个高度。

答案 2 :(得分:0)

您无法为细胞设置约束。您可以为其内容视图设置约束。并从大小的Inspector中设置单元格的高度。如果您想要单元格的动态大小,则可以使用

self.tableView.estimatedRowHeight = 44.0; 
self.tableView.rowHeight = UITableViewAutomaticDimension;

但你必须使用autolayout。希望这会帮助你。 :)