Ios 表视图单元格行高不起作用

Ios 表视图单元格行高不起作用,ios,swift,uitableview,row-height,Ios,Swift,Uitableview,Row Height,我尝试在表格视图单元格中硬编码行高。运行程序后,看起来只有一行。我怀疑这是因为表视图行的高度 您能告诉我这里出了什么问题吗?在UITableViewDelegate中添加此代码 func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { return 100 } 在Xcode 9中,tableview根据Autolayout自动创建估算单元。因为您没有提供自动

我尝试在表格视图单元格中硬编码行高。运行程序后,看起来只有一行。我怀疑这是因为表视图行的高度


您能告诉我这里出了什么问题吗?

在UITableViewDelegate中添加此代码

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return 100
}

Xcode 9中,
tableview
根据
Autolayout
自动创建估算单元。因为您没有提供自动布局,所以您得到了这个

您需要通过选择tableview并取消选中两个选项来禁用估计和自动单元格大小:

给出您想要的行高值,将相应地创建单元格


希望这能有所帮助。

如果希望单元格根据其内容占用空间,则需要在表视图中返回UITableViewAutomaticDimension,委托方法行高度:和估计行高度

确保执行以下步骤,自动标注对单元格/行高布局有效。(以下是UILabel的示例代码以及如何为表格单元格设置特定于内容的高度。)

  • 分配并实现数据源和委托
  • UITableViewAutomaticDimension
    分配给行高和估计高度
  • 实施委托/数据源方法(即
    heightForRowAt
    并向其返回值
    UITableViewAutomaticDimension
-

对于UITableviewCell中的标签实例

  • 设置行数=0(&换行模式=截断尾部)
  • 设置与其superview/单元容器相关的所有约束(顶部、底部、右-左)
  • 可选:设置标签的最小高度,如果您想要标签覆盖的最小垂直面积,即使没有数据

viewdiload()中将行高和估计行高设置为自动

table.rowHeight = UITableViewAutomaticDimension
table.estimatedRowHeight = UITableViewAutomaticDimension
heightForRowAt:
将高度设置为
uitableview自动尺寸设置为

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return UITableViewAutomaticDimension
}
注意:将标签
长餐厅名称的行数设置为0。

根据我的做法,您必须添加一系列约束,然后自动计算行高


简言之,我所做的:(添加和修改约束是故事板视图右下角最右边的两个按钮)我首先选择原型单元中的所有视图,删除所有约束(最右边的按钮上有一个不错的选项),然后添加所有缺少的约束(另一个不错的选项)最后我选择了右边的第二个按钮,点击了所有的红线。可以在同时选择所有视图的情况下执行此操作。然后它工作了。

您可以在tableviewdelegate中手动执行此操作:

override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return 100
}
  • 将行数设置为0
  • 设置
  • 返回
    tableView中的
    UITableView.automaticDimensions
    (\uu:heightForRowAt:)
    delegate方法

  • 设置所有约束。底部约束对于增加表视图单元格高度很重要


  • 你的一切都准备好了

    不,不要这样做。如果所有行的高度都相同,则最好只需在
    viewDidLoad
    中设置一次表视图的
    rowHeight
    属性。仅当不同的行具有不同的高度时才实现此委托方法。@rmaddy根据apple文档,委托的性能优于属性。@dahiya_-boy您误读了文档。
    UITableView行高
    UITableView委托行高
    的文档清楚地说明委托方法是一个性能问题。设置
    rowHeight
    属性要比使用委托方法(假设所有行的高度相同)有效得多。高度似乎没有问题,您是否也在代码中设置了“来自委托方法的高度”?如果是,请删除该方法。您的标签行号是多少?它应该是0,那么您的约束集呢?另一方面,您是否设置了动态约束表视图高度?您可以查看我的答案,希望这对您有所帮助您也可以使用:yourTable.rowHeight=UITableViewAutomaticDimension yourTable.estimatedRowHeight=UITableViewAutomaticDimensions如果我有不同类型的原型单元和不同的高度?
    override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return 100
    }
    
       yourTableView.rowHeight = UITableView.automaticDimension and 
       yourTableView.estimatedRowHeight =  UITableView.automaticDimension