产品设计了一张不规则的banner图. 要求banner能随着tableview滚动,并且banner图片一部分能充当tableview的底图.
import UIKit
import EZSwiftExtensions
class SCashBackListVC: UIViewController {
private var tableView: UITableView!
var headerView: CJFHeaderView = UINib(nibName: CJFHeaderView.className, bundle: nil).instantiate(withOwner: nil, options: nil).first as! CJFHeaderView
var page: Int = 1
override func viewDidLoad() {
super.viewDidLoad()
setupUI()
}
private func setupUI() {
tableView = UITableView(frame: .zero, style: .grouped)
tableView.backgroundColor = .clear
tableView.dataSource = self
tableView.delegate = self
tableView.separatorStyle = .none
tableView.contentInsetAdjustmentBehavior = .never
self.view.addSubview(tableView)
tableView.snp.makeConstraints { (make) in
make.left.right.top.bottom.equalToSuperview()
}
tableView.register(AdHoriCell.self, forCellReuseIdentifier: AdHoriCell.className)
tableView.register(UINib(nibName: SearchCateGoodsCell.className, bundle: nil), forCellReuseIdentifier: SearchCateGoodsCell.className)
headerView.frame = CGRect(x: 0, y: 0, w: ez.screenWidth, h: 140)
tableView.tableHeaderView = headerView
}
}
extension SCashBackListVC: UITableViewDataSource, UITableViewDelegate {
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
// 在第一行cell将显示时,将header调整到最底层
if indexPath.row == 0 {
tableView.sendSubview(toBack: headerView)
}
}
}
需要注意的是,这里完成这效果一定要使用reloadData()方法刷新列表
//self.tableView.reloadRows(at: [IndexPath(item: 0, section: 0)], with: .none)
self.tableView.reloadData()
修改前:
修改后: