Tableview标头与单元格重叠

时间:2019-04-27 13:37:06

标签: ios swift xcode tableview nstableheaderview

我有一个带有表视图的视图控制器。 Tableview具有表视图标题和动态单元格。我添加了一个UIView作为表视图标题,它具有多个具有动态高度的标签。一切正常。

但是,由于视图中使用的标签的额外高度(由于多余的内容而导致其扩展),导致视图的大小(用作表视图标题)扩展时会发生问题。

结果,表视图的上部单元格被标题视图隐藏或重叠。在这种情况下有人可以帮我吗?所有这些都是使用情节提要完成的。

1 个答案:

答案 0 :(得分:0)

在情节提要中添加表格视图标题时,不能更改其高度。 以编程方式创建表视图标头,并以return方法创建UITableView.automaticDimension heightForHeaderInSection

override func viewDidLoad() {
    super.viewDidLoad()
    tableView.estimatedSectionHeaderHeight = 100
    tableView.sectionHeaderHeight = UITableView.automaticDimension
}

override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let header = UIView()

    let lbl = UILabel()
    lbl.text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum"
    lbl.numberOfLines = 0
    lbl.lineBreakMode = .byWordWrapping
    lbl.translatesAutoresizingMaskIntoConstraints = false
    header.addSubview(lbl)

    header.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|-(10)-[lbl(>=30)]-(10)-|", options: [], metrics: nil, views: ["lbl":lbl]))
    header.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|-(30)-[lbl]-(30)-|", options: [], metrics: nil, views: ["lbl":lbl]))
    return header
}
override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return UITableView.automaticDimension
}