首页 > 解决方案 > 如何调整uitableview的标题?

问题描述

我有一个 uitableview

  override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        let width = tableView.frame.width - CGFloat((start*2))
        
        let headerView = UIView()
        headerView.frame.origin.x = 0
        headerView.frame.origin.y = -45
        headerView.frame.size.width = tableView.frame.width
     let desc = UILabel()
        desc.frame.origin.x = label.frame.origin.x
        desc.frame.origin.y = line.frame.maxY + 10
        desc.frame.size.width = width
        
        desc.numberOfLines = 0
        desc.font = UIFont(name: "Lato-Regular", size: 17);
        desc.textColor = UIColor(red: 0.53, green: 0.53, blue: 0.53, alpha: 1.00)
        desc.text = self.data.desc
        desc.backgroundColor = UIColor.clear
        desc.textAlignment = .left
        desc.adjustsFontForContentSizeCategory = true
     
        if (loadMoreDesc) {
            desc.sizeToFit()
        } else {
            desc.frame.size.height = 110
        }
        headerView.addSubview(desc)
        
        
        let moreButtonDesc = UIButton(frame: CGRect(x: desc.frame.minX, y: desc.frame.maxY, width: 80, height: 15))
        moreButtonDesc.contentVerticalAlignment = UIControl.ContentVerticalAlignment.center
        moreButtonDesc.titleLabel?.textAlignment = .left
        
        if (loadMoreDesc) {
             moreButtonDesc.setTitle("Less", for: .normal)
        } else {
             moreButtonDesc.setTitle("More", for: .normal)
        }
        moreButtonDesc.titleLabel?.font = UIFont(name: "Lato-Regular", size: 15);
        moreButtonDesc.setTitleColor(UIColor(red: 0.00, green: 0.48, blue: 1.00, alpha: 1.00), for: .normal)
        moreButtonDesc.addTarget(self, action:#selector(self.expandDesc(sender:)), for: .touchUpInside)
        headerView.addSubview(moreButtonDesc)
        

当人们点击“更多”按钮时,描述应该展开并且表格视图标题的高度应该增加以适合描述(desc)。我怎样才能做到这一点?这是我的 expandDesc 函数

@objc func expandDesc(sender: UIButton) {
    loadMoreDesc = !loadMoreDesc
    tableView.reloadData()
}

请注意,描述是动态高度。除非我知道描述的高度,否则我不会知道为标题设置的高度。

标签: iosswift

解决方案


请你试试这个

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
     if loadMoreDesc {
        return 100
      } else {
        return 50.0
      }
}

推荐阅读