- (void)tableView:(UITableView *)tableView willDisplayFooterView:(UIView *)view forSection:(NSInteger)section
{
view.backgroundColor = [UIColor redColor];
}
想改变UITableView的footerView的背景色,上面是最容易的方法,但并没有用。
于是用了这个方法
- (nullable UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
UIView *headerView = [UIView new];
headerView.backgroundColor = [UIColor redColor];
return headerView;
}
能有效。
因为我项目中
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 100;
}
有很多个section,就在以上方法中做了优化,用了重用机制
- (nullable UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
static NSString *ID = @"headerViewIdentifier";
UITableViewHeaderFooterView *footerView = [tableView dequeueReusableHeaderFooterViewWithIdentifier:ID];
if (footerView == nil) {
footerView = [[UITableViewHeaderFooterView alloc]initWithReuseIdentifier:ID];
}
[footerView.contentView setBackgroundColor:[UIColor blueColor]];
return footerView;
}
还有一点有必要说明,如果要要控制某个section不展示headerView,下面方法是没有用的
- (nullable UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
static NSString *ID = @"headerViewIdentifier";
UITableViewHeaderFooterView *footerView = [tableView dequeueReusableHeaderFooterViewWithIdentifier:ID];
if (footerView == nil) {
footerView = [[UITableViewHeaderFooterView alloc]initWithReuseIdentifier:ID];
}
[footerView.contentView setBackgroundColor:[UIColor blueColor]];
return footerView;
}
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
if (section == 0) {
return 0;
}
return 10;
}
正确做法:
- (nullable UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
if (section == 0) {
return nil;
}
static NSString *ID = @"headerViewIdentifier";
UITableViewHeaderFooterView *footerView = [tableView dequeueReusableHeaderFooterViewWithIdentifier:ID];
if (footerView == nil) {
footerView = [[UITableViewHeaderFooterView alloc]initWithReuseIdentifier:ID];
}
[footerView.contentView setBackgroundColor:[UIColor blueColor]];
return footerView;
}
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
return 10;
}
说明- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section方法只能影响footerView的高度,不能控制foooterView是否显示(就是return 0 footerView会显示默认高度18)
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
return 0;
}
- (nullable UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
if (self.type == FDOrderSearchViewControllerTypeSearchResult) {
static NSString *ID = @"headerViewIdentifier";
UITableViewHeaderFooterView *footerView = [tableView dequeueReusableHeaderFooterViewWithIdentifier:ID];
if (footerView == nil) {
footerView = [[UITableViewHeaderFooterView alloc]initWithReuseIdentifier:ID];
}else{
NSLog(@"===%f",footerView.frame.size.height);
}
[footerView.contentView setBackgroundColor:[UIColor blueColor]];
return footerView;
}
return nil;
}