tableView是我们移动前端开发中最常用的控件,本文章介绍Swift4.0创建自定义tableView,希望大家举一反三,学以致用。
第一步(创建控制器 )
import UIKit
class HomeDetailsViewController: BaseViewController , UITableViewDelegate,UITableViewDataSource{
vartitleStr:String?
varavarStr:String?
overridefuncviewDidLoad() {
super.viewDidLoad()
self.title="详情"
self.view.addSubview(self.table)
}
overridefuncviewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
self.table.snp.makeConstraints{ (make)in
make.edges.equalTo(self.view)
}
}
lazyvartable:UITableView= {
lettable =UITableView(frame:CGRect.zero, style: .plain)
table.backgroundColor = UIColor.groupTableViewBackground
table.delegate=self
table.dataSource=self
table.rowHeight = UITableViewAutomaticDimension
//table.estimatedRowHeight = 300
table.tableFooterView=UIView(frame: .zero)
table.separatorStyle = UITableViewCellSeparatorStyle.none
self.view.addSubview(table)
table.tableHeaderView=self.homeHeaderView
table.register(HomeDetailsCell.self, forCellReuseIdentifier:"HomeDetailsCellID")
returntable
}()
lazyvarhomeHeaderView:HomeHeaderView= {
lethomeHeaderView =HomeHeaderView(frame:CGRect.init(x:0, y:0, width:self.view.bounds.width, height:120))
homeHeaderView.avarIV.image=UIImage(named:"redbag_userhead_1")
homeHeaderView.titleLabel.text="swift"
returnhomeHeaderView
}()
//设置cell的数量
functableView(_tableView:UITableView, numberOfRowsInSection section:Int) ->Int{
return1
}
//设置section的数量
funcnumberOfSections(in tableView:UITableView) ->Int{
return1
}
//设置tableview的cell
functableView(_tableView:UITableView, cellForRowAt indexPath:IndexPath) ->UITableViewCell{
letcell :HomeDetailsCell= (table.dequeueReusableCell(withIdentifier:"HomeDetailsCellID", for: indexPath)as!HomeDetailsCell)
cell.textlab.text = "我有过多次这样的奇遇,\n从天堂到地狱只在瞬息之间;\n每一朵可爱、温柔的浪花,\n都成了突然崛起、随即倾倒的高山。\n\n每一滴海水都变脸变色,\n刚刚还是那样美丽、蔚蓝;\n旋涡纠缠着旋涡,\n我被抛向高空又投进深渊……"
returncell
}
//cell点击事件
functableView(_tableView:UITableView, didSelectRowAt indexPath:IndexPath) {
}
overridefuncdidReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
第二步(创建自定义cell )
import UIKit
classHomeDetailsCell:UITableViewCell{
overridefuncawakeFromNib() {
super.awakeFromNib()
// Initialization code
}
overrideinit(style:UITableViewCellStyle, reuseIdentifier:String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
self.contentView.addSubview(self.textlab)
self.textlab.snp.makeConstraints{ (make)in
make.left.equalTo(self.contentView).offset(20)
make.right.equalTo(self.contentView).offset(-20)
make.top.equalTo(self.contentView).offset(20)
make.bottom.equalTo(self.contentView).offset(-20)
}
}
lazyvartextlab:UILabel= {
lettextlab =UILabel(frame:CGRect.zero)
textlab.numberOfLines=0
textlab.textAlignment = NSTextAlignment.center
textlab.font=UIFont.init(name:"PingFangSC-Regular", size:13)
returntextlab
}()
requiredinit?(coder aDecoder:NSCoder) {
fatalError("init(coder:) has not been implemented")
}
overridefuncsetSelected(_selected:Bool, animated:Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
第三步(创建自定义headerView,根据需求,不需要的情况下把控制器对于代码去掉 )
import UIKit
classHomeHeaderView:UIView{
overrideinit(frame:CGRect) {
super.init(frame: frame)
self.backgroundColor = UIColor(hex: "FFD129")
self.addSubview(self.avarIV)
self.addSubview(self.titleLabel)
}
lazyvaravarIV:UIImageView= {
letavarIV =UIImageView()
avarIV.layer.cornerRadius=50/2
returnavarIV
}()
lazyvartitleLabel:UILabel= {
lettitleLabel =UILabel()
titleLabel.textColor=UIColor.white
titleLabel.font=UIFont.init(name:"PingFangSC-Regular", size:13)
returntitleLabel
}()
overridefunclayoutSubviews() {
self.avarIV.snp.makeConstraints{ (make)in
make.centerX.equalTo(self)
make.top.equalTo(self).offset(20)
make.size.equalTo(CGSize.init(width:50, height:50))
}
self.titleLabel.snp.makeConstraints({ (make)in
make.centerX.equalTo(self)
make.top.equalTo(avarIV.snp.bottom).offset(10)
})
}
requiredinit?(coder aDecoder:NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}