如何制作动态Uitableview标题高度

时间:2017-09-26 10:44:46

标签: uitableview swift3 uitableviewsectionheader

我无法弄清楚为什么我无法根据文字数量调整我的章节标题高度。

我在此发现的大多数信息都提供了以下有关如何根据文本数量调整单元格行高度的步骤:

  1. 在storyboard中为tableView单元格添加标签,并将自动约束设置为标签。
  2. 在“参数检查器”中将行数设置为0.
  3. 将以下代码添加到ViewDidLoad中的swift文件中:

    tableView.estimatedRowHeight = 50.0
    tableView.rowHeight = UITableViewAutomaticDimension
    
  4. 在制作具有动态高度的单元格行时,这对我来说非常有效,但我无法使用节标题。

    我认为这就像添加:

    一样简单
    tableView.sectionHeaderHeight = UITableViewAutomaticDimension;
    tableView.estimatedSectionHeaderHeight = 50.0;
    

    但这不起作用。我知道指定行高的代码将取消自动布局约束,因此我认为问题可能出现在某些代码中,这使得部分在轻敲手势上展开/折叠,并且它有一个图像(箭头指向/根据部分是展开还是折叠而下降。这是我认为可能导致问题的原因:

    func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
        //recast your view as a UITableViewHeaderFooterView
        let header: UITableViewHeaderFooterView = view as! UITableViewHeaderFooterView
        header.contentView.backgroundColor = UIColor.colorWithHexString(hexStr: "#4f9c25")
        header.textLabel?.textColor = UIColor.white
    
    
        if let viewWithTag = self.view.viewWithTag(kHeaderSectionTag + section) {
            viewWithTag.removeFromSuperview()
        }
    
        let borderTop = UIView(frame: CGRect(x:0, y:0, width: tableView.bounds.size.width, height: 1.0))
        borderTop.backgroundColor = UIColor.self.init(red: 5/255, green: 16/255, blue: 28/255, alpha: 1.0)
        header.addSubview(borderTop)
    
    
        let headerFrame = self.view.frame.size
        let theImageView = UIImageView(frame: CGRect(x: headerFrame.width - 32, y: 13, width: 18, height: 18));
        theImageView.image = UIImage(named: "Chevron-Dn-Wht")
        theImageView.tag = kHeaderSectionTag + section
        header.addSubview(theImageView)
    
    
        // make headers touchable
        header.tag = section
        let headerTapGesture = UITapGestureRecognizer()
        headerTapGesture.addTarget(self, action: #selector(WeedsControlledVC.sectionHeaderWasTouched(_:)))
        header.addGestureRecognizer(headerTapGesture)
    }
    

    如果这不是问题,我也尝试了以下主题中的建议,但我也无法使其工作。

    Setting tableHeaderView height dynamically

    任何想法我做错了什么?

0 个答案:

没有答案