一、
iOS14之后修改backgroundView的背景颜色发现并没有效果,经过多次尝试,发现如果去修改contentView的背景颜色的话是可以的,在willDisplayHeaderView代理方法中添加一下代码即可:
headerView.contentView.backgroundColor = [UIColor clearColor]; //iOS14.0之后添加改代码
二、
给UITableViewHeaderFooterView设置背景色分2种情况
1.tableView在group模式下,UITableViewHeaderFooterView的背景色默认是透明的,此时如果要设置背景色只需要给contentView设置颜色即可
self.contentView.backgroundColor = [UIColor clearColor];
2.tableView在plain模式下,这个时候UITableViewHeaderFooterView默认有个浅灰色背景,如果要让背景色为clearColor,就不能直接设置self 和 self.contentView的颜色,经过测试发现,这样设置是不会生效的,正确的方式可以通过下面方法来实现
-(void)tableView:(UITableView*)tableView willDisplayHeaderView:(UIView*)view forSection:(NSInteger)section {
if([view isMemberOfClass:[UITableViewHeaderFooterViewclass]]) {
UITableViewHeaderFooterView *headerView = (UITableViewHeaderFooterView *)view; headerView.backgroundView.backgroundColor = [UIColor clearColor]; headerView.contentView.backgroundColor = [UIColor clearColor]; //iOS14.0之后添加改代码
}
}
或者:
headerView.backgroudView = [UIView new]
在 iOS14 bate 中,UITableViewCell 中如果有直接添加在 cell 上的控件,也就是使用[self addSubview:]方式添加的控件,会显示在 contentView 的下层,UITableViewHeaderFooterView也应该是这样子的。contentView 会阻挡事件交互,使所有事件都响应tableView:didSelectRowAtIndexPath:方法,如果 customView 存在交互事件将无法响应。如果 contentView 设置了背景色,还会影响界面显示。
三、
UITableViewHeaderFooterView设置背景色的时候,设置如果alpha不等于0的情况下,plain模式下,当头部悬停的时候,它的背景会是透明的。如果不要这种效果的话,设置backgroundColor的时候UIcolor最好不要带透明度,以下两种情况,背景都是带透明的
1、bgView.backgroundColor = UIColor.white.withAlphaComponent(0.45)
2、UIImage.fromColor(UIColor.white.withAlphaComponent(0.45))