美文网首页Bug(代码)
TableView.tableHeadView

TableView.tableHeadView

作者: Silicn | 来源:发表于2019-05-16 09:38 被阅读49次

    layoutFittingCompressedSize使headerView高度自适应

    好久没搞过这些事情了,今天写UI,突然需要tableView.tableHeadView自适应高度,
    本来是个很简单的事情,由于忘了一个点,瞎忙好久,[Cry]

    1,创建TableView

     let tableView = UITableView(frame: CGRect(x: 0, y: 0, width: 100, height: 100),style: UITableView.Style.plain)
            tableView.delegate = self
            tableView.dataSource = self
            self.view.addSubview(tableView)
            self.tableView = tableView
    
            tableView.snp_makeConstraints { (make) in
                make.top.equalTo(self.view.snp_top)
                make.left.right.equalTo(0)
                make.bottom.equalTo(self.view.snp_bottom)
            }
    

    2,添加HeadView

    let header = UIView()
            
            let label = UILabel(frame: CGRect(x: 0, y: 0, width: 100, height: 30));
            label.text = self.content
            label.numberOfLines = 0
            header.addSubview(label)
           //设置header宽度 
            header.snp_makeConstraints { (make) in
                make.width.equalTo(UIScreen.main.bounds.width)
            }
         
            label.snp.makeConstraints { (make) in
                make.left.equalTo(header.snp_leftMargin).offset(8)
                make.right.equalTo(header.snp_rightMargin).offset(8)
                make.top.equalTo(header.snp_top)
                make.bottom.equalTo(header.snp_bottom)
            }
     
            self.tableView.tableHeaderView = header;
    

    3,重设HeadView高度

    let height = header.systemLayoutSizeFitting(UIView.layoutFittingCompressedSize).height
            var frame = header.bounds;
            frame.size.height = height;
            header.frame = frame;
            self.tableView.tableHeaderView = header;
          
            self.tableView.tableHeaderView?.setNeedsLayout();
            self.tableView.tableHeaderView?.layoutIfNeeded();
            
    

    本来这样就行了,可是我由于理解问题,认为header的width系统会自动判断,少了这句

     header.snp_makeConstraints { (make) in
                make.width.equalTo(UIScreen.main.bounds.width)
            }
    

    始终高度获取不到。
    小伙伴们不要忘记!最后说一句:坑!

    相关文章

      网友评论

        本文标题:TableView.tableHeadView

        本文链接:https://www.haomeiwen.com/subject/psieaqtx.html