前言:
customView.gif
也许大家会觉得,有了MJ,Header
和Footer
有难度?还需要再自己动手弄?
enmmmmm......
其实吧,就算不用MJ,也很简单,就两个代理方法而已。
虽然有很多大神,写了很多优秀的开源框架,但是原生的东西,虽然“笨了”一点儿,但是了解一下也是没毛病的。
而且,存在即真理嘛,既然存在,那么就一定是有一定道理的,有些时候也可以用到。
直接看效果图吧:
设置Header:
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{}
设置Footer:
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{}
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{}
没错,就是这么几个代理方法
主要代码部分(真的很简单)
:
#pragma mark - 自定义headerView
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
UIView *header = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 100, HeaderHeight)];
UILabel *lab = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, HeaderHeight)];
lab.text = [NSString stringWithFormat:@"----我是%@header呀---",self.sectionArray[section]];
lab.textAlignment = NSTextAlignmentCenter;
[header addSubview:lab];
header.backgroundColor = [UIColor blueColor];
return header;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return HeaderHeight;
}
#pragma mark - 自定义footerView
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
return FooterHeight;
}
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
UIView *footer = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 100, FooterHeight)];
UILabel *lab = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, FooterHeight)];
lab.text = [NSString stringWithFormat:@"----我是%@footer呀---",self.sectionArray[section]];
lab.textAlignment = NSTextAlignmentCenter;
[footer addSubview:lab];
footer.backgroundColor = [UIColor brownColor];
return footer;
}
全部代码部分:
#import "JHCustomTableVC.h"
#define SCREEN_WIDTH [UIScreen mainScreen].bounds.size.width
#define SCREEN_HEIGHT [UIScreen mainScreen].bounds.size.height
@interface JHCustomTableVC ()<UITableViewDelegate,UITableViewDataSource>
/// tableView
@property (strong, nonatomic) UITableView *tableView;
/** section*/
@property (nonatomic, strong) NSMutableArray * sectionArray;
/** row*/
@property (nonatomic, strong) NSMutableArray * rowArray;
@end
static NSString *cellID = @"JHCustomTableVCCell";
static CGFloat FooterHeight = 30;
static CGFloat HeaderHeight = 60;
@implementation JHCustomTableVC
- (void)viewDidLoad {
[super viewDidLoad];
[self setupUI];
[self getData];
}
- (void)getData{
_sectionArray = [[NSMutableArray alloc]init];
[_sectionArray addObjectsFromArray:@[@"第一组",@"第二组",@"第三组"]];
_rowArray = [[NSMutableArray alloc]init];
[_rowArray addObjectsFromArray:@[@"第一行",@"第二行",@"第三行"]];
[self.tableView reloadData];
}
- (void)setupUI{
self.title = @"header & footer";
self.view.backgroundColor = [UIColor colorWithRed:242/250.0 green:243/250.0 blue:240/250.0 alpha:1];
self.tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT-64-44) style:UITableViewStylePlain];
self.tableView.backgroundColor = [UIColor colorWithRed:242/250.0 green:243/250.0 blue:240/250.0 alpha:1];
self.tableView.delegate = self;
self.tableView.dataSource = self;
[self.view addSubview:self.tableView];
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return self.sectionArray.count;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 100;
}
- (NSInteger)tableView:(nonnull UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return self.rowArray.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellID];
}
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.textLabel.text = self.rowArray[indexPath.row];
return cell;
}
#pragma mark - 自定义headerView
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
UIView *header = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 100, HeaderHeight)];
UILabel *lab = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, HeaderHeight)];
lab.text = [NSString stringWithFormat:@"----我是%@header呀---",self.sectionArray[section]];
lab.textAlignment = NSTextAlignmentCenter;
[header addSubview:lab];
header.backgroundColor = [UIColor blueColor];
return header;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return HeaderHeight;
}
#pragma mark - 自定义footerView
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
return FooterHeight;
}
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
UIView *footer = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 100, FooterHeight)];
UILabel *lab = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, FooterHeight)];
lab.text = [NSString stringWithFormat:@"----我是%@footer呀---",self.sectionArray[section]];
lab.textAlignment = NSTextAlignmentCenter;
[footer addSubview:lab];
footer.backgroundColor = [UIColor brownColor];
return footer;
}
@end
需要注意一点:
当你有多个tableView
的时候,你需要判断当前tableView是不是你想要加Heade
r或者Footer
的tableView,从而进行添加
结束语:
最近呢,终于算是把项目的bug改完了,来新公司也半个月了。说实话,这半个月是真的漫长呀~~~~
希望慢慢走上正轨,不管生活,还是工作。
同时,希望自己的学习计划不要搁浅,哈哈哈哈2333333......
网友评论