文本设置后是否可以调整UITabeView标题的大小?
在我的XIB中,我得到了一个TabLVIEW,标题为1行文本的高度为42。对于2行,我需要52的高度,对于3行,我需要62的高度。标题将动态设置为标题。但是heightForHeaderInSection函数是在生命周期设置头文本之前调用的。所以第2行和第3行可能没有显示。
我写了一个方法,告诉我有多少行的文字标题,但如何更新标题?如果我调用tableView.reloadData()的话,我最终会进入无限循环。如果我为每个线性模型设置var
我发现从未调用过heightForheaderInSection

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

    let cell = tableView.dequeueReusableCell(withIdentifier: headerCell) as! SectionHeader
    cell.titleLabel.text = self.sectionTitle

    linesOfHeader = cell.getNumberOfLines()


    return cell
  }



 func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        if(linesOfHeader == 1) { return 44}
        else if(linesOfHeader == 2) {return 52}
        else { return 62}
  }

最佳答案

支持动态页眉高度的更好的解决方案是使用“UITableViewAutomaticDimension”,如下所示:
在viewDidLoad中添加以下行:

self.tableView.sectionHeaderHeight = UITableViewAutomaticDimension
self.tableView.estimatedSectionHeaderHeight = 50

并移除HeaderIn部分的功能高度
然后让标签扩展到所需的行数
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {

    let cell = tableView.dequeueReusableCell(withIdentifier: headerCell) as! SectionHeader
       cell.titleLabel.text = self.sectionTitle
       cell.titleLabel.numberOfLines = 3
     return cell
    }

如果页眉高度与单元格高度重叠,也可以将这两行添加到viewDidLoad
    self.tableView.rowHeight = UITableViewAutomaticDimension
    self.tableView.estimatedRowHeight = 40 // estimated cell height

10-05 18:13