首页 > 解决方案 > 为什么这两个表的行高不同?

问题描述

请查看下面的模拟器屏幕截图,您将看到:

  1. 带有三个按钮的水平堆栈视图
  2. 带有红色页眉、棕色页脚和浅灰色背景的表格视图
  3. 带有三个按钮的水平堆栈视图
  4. 带有青色页眉、橙色页脚和浅色背景的表格视图

我通过情节提要创建了该界面。在界面生成器中,我小心翼翼地以完全相同的方式创建两个表,但颜色除外。我已经包含了一个可能有用的 Xcode 屏幕截图。请注意,添加到原型单元格的标签的边缘固定在单元格的边缘。

我没有采取任何行动来设置表格行高。在数据源的 cellForRowAt 方法中,我正在打印单元格高度:它们被报告为 44,据我所知,这是默认值。

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell: UITableViewCell

    if tableView === upperTable {
        cell = tableView.dequeueReusableCell(withIdentifier: "upper")!
        (cell as! TableViewCell).label.text = upperData[indexPath.row]
        print("Upper table cell height = \(cell.bounds.height)")
    }
    else {
        cell = tableView.dequeueReusableCell(withIdentifier: "lower")!
        (cell as! TableViewCell).label.text = lowerData[indexPath.row]
        print("Lower table cell height = \(cell.bounds.height)")
    }

    return cell
}

任何人都可以提出两个表的最终行高不同的可能原因吗?

在此处输入图像描述

在此处输入图像描述

标签: iosswiftuitableview

解决方案


在一张表中,它看起来像带有粉红色标题的表,您的约束设置内容视图的底部边缘以匹配标签的底部(因此您将内容视图的底部边缘移动到标签的底部以制作内容视图的高度取决于标签的高度)。

在另一个中,您正在设置内容视图的底部边距以匹配标签的底部(因此您正在移动边距以对应于标签的底部,而不是视图的底部边缘)。


推荐阅读