tableview自定义组头组尾

1、 在设置组头组尾的时候,自定义的组头或者组尾一定要继承自:UITableViewHeaderFooterView
2、组头和组尾在注册的时候是同一个代理方法,如果只想要组头,设置一下组头高度的代理方法,组尾的设置成0.1即可,同理,如果只想要组尾也是如此
3、切记,一定要注册!!!

// 注册组头视图
  view.register(ZYDemoView.classForCoder(), forHeaderFooterViewReuseIdentifier: "ZYPlanHeadView")
// - 懒加载控件
    lazy var tableView: UITableView = {
        let view = UITableView(frame: CGRect.zero, style: .plain)
        view.delegate = self
        view.dataSource = self
        view.separatorStyle = .none
        view.tableFooterView = UIView()
        view.rowHeight = 75
        view.estimatedRowHeight = 0
        view.estimatedSectionFooterHeight = 0
        view.estimatedSectionHeaderHeight = 0
        // 注册组头视图
        view.register(ZYDemoView.classForCoder(), forHeaderFooterViewReuseIdentifier: "ZYPlanHeadView")
        view.register(UITableViewCell.classForCoder(), forCellReuseIdentifier: "cellID")
        
        return view
    }()

// 实现代理方法
    // 这是注册组头或者组尾(组头和组尾是一个代理方法)
    func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        guard let sectionView = tableView.dequeueReusableHeaderFooterView(withIdentifier: "ZYPlanHeadView") as? ZYDemoView else {
            return UIView()
        }
        return sectionView
    }
    // 这是设置组头的高度(如果不需要)
    func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        return 30
    }
    // 这是设置组尾的高度(如果不需要)
    func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
        return 0.1
    }

这里的ZYDemoView是自定义的view,必须继承自:UITableViewHeaderFooterView
内部代码如下:

import UIKit

class ZYDemoView: UITableViewHeaderFooterView {

    override init(reuseIdentifier: String?) {
        super.init(reuseIdentifier: reuseIdentifier)
        // 这里修改组头的背景颜色 (默认颜色和系统的那个组头的颜色是一样的)
        contentView.backgroundColor = UIColor.white
        setUI()
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    private func setUI(){
        contentView.addSubview(titleLabel)
        
        titleLabel.mas_makeConstraints { (make) in
            make?.left.equalTo()(30)
            make?.centerY.mas_equalTo()(self)
        }
    }
    
    private lazy var titleLabel: UILabel = {
        let label = UILabel()
        label.text = "组头组头"
        label.textAlignment = .center
        label.textColor = UIColor.black
        label.font = UIFont.systemFont(ofSize: 20)
        
        return label
    }()

}

你可能感兴趣的:(tableview自定义组头组尾)