自定义UITableViewCells重叠在表中

时间:2016-02-17 08:09:05

标签: ios objective-c swift uitableview

我有一个自定义单元格:

enter image description here

但是当tableView加载时,我已经在其中覆盖了单元格:

enter image description here

我已尝试将以下代码插入viewDidLoad()

tableView.estimatedRowHeight = tableView.rowHeight
tableView.rowHeight = UITableViewAutomaticDimension

但确实没有帮助。

2 个答案:

答案 0 :(得分:1)

来自文档:

//Declaration
//SWIFT
optional func tableView(_ tableView: UITableView,
heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
//OBJECTIVE-C
- (CGFloat)tableView:(UITableView *)tableView
heightForRowAtIndexPath:(NSIndexPath *)indexPath

使方法返回单元格的高度。如果这没有用,那么你需要给我们更多细节(可能还有约束)。

编辑: 我设法通过做两件事来解决这个问题:

  1. 更改这两行:

    tableView.estimatedRowHeight = 150

    tableView.rowHeight = UITableViewAutomaticDimension

tableview会自动使单元格变小

  1. 在单元格xib中,您应该将约束添加到单元格的底部。这样可以正确计算高度。

如果您愿意,我可以向您发送项目的工作副本,只需提供一些联系邮件或某事。

答案 1 :(得分:0)

执行此操作时:

tableView.estimatedRowHeight = tableView.rowHeight

假设tableView是一个UITableView,在这里你需要给出一个数字,而不是UITableView的rowHeight属性(类似于100)。

在这里你给出一个估计的高度,只是让手机计算表的总高度,它不是每个单元的实际高度。所以给出你估计的平均值。

tableView.rowHeight = UITableViewAutomaticDimension没问题。

还要查看单元格视图中的约束。要完成这项工作,您必须从顶部到底部以及标签的中间设置约束。

修改:我发现缺少最后一个约束(日期标签的底部约束)

现在,看到代码,我会说这个方法不是必需的:

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    return UITableViewAutomaticDimension
}

希望它有所帮助。