样式
当tableView的样式为UITableViewPlain时
默认没有tableHeaderView,tableFooterView,sectionHeaderView,sectionFooterView。当tableView的样式为UITableViewGrouped时
使用默认的高度设置tableHeaderView,tableFooterView,sectionHeaderView,sectionFooterView。
设置seciotnHeader或seciotnFooter的高度
1.使用属性设置seciotnHeader或seciotnFooter的高度
当tableView的样式为UITableViewPlain时
属性@property(nonatomic) CGFloat sectionHeaderHeight;
和@property(nonatomic) CGFloat sectionFooterHeight;
都不起作用。当tabaleView的样式为UITableViewGrouped时
属性@property(nonatomic) CGFloat sectionHeaderHeight;
和属性@property(nonatomic) CGFloat sectionFooterHeight;
才起作用。
如果同时实现了代理方法tableView:heightForHeaderInSection:
或
tableView:heightForFooterInSection:
时,则代理方法会覆盖属性。当tableView的样式为UITableViewGrouped时
当想设置header或footer的高度为0时,只能使用属性设置。
使用代理方法tableView:heightForHeaderInSection:
不起作用,系统会使用默认高度设置header或footer。
2.使用代理方法设置seciotnHeader或seciotnFooter的高度
当tableView的样式是UITableViewPlain时,可以使用代理方法
tableView:heightForHeaderInSection:
或tableView:heightForFooterInSection:
设置header或footer高度当tableView的样式是UITableViewGrouped时,无法使用代理方法
tableView:heightForHeaderInSection:
或tableView:heightForFooterInSection:
设置header或footer的高度。
自定义sectionHeader或sectionFooter的视图
*只有实现了方法:tableView:heightForHeaderInSection:
或tableView:heightForFooterInSection:
时,设置header或footer的方法tableView: viewForHeaderInSection:
或tableView: viewForFooterInSection:
才起作用。
分割线
当tableView的样式为UITableViewPlain时,table的各个cell的底部都有分割线。
当tableView的样式为UITableViewPlain时,
如果实现代理方法tableView:heightForHeaderInSection:
时,
section的最后一个footer会有分割线,其他的header和footer都没有分割线。如果实现代理方法
tableView:heightForFooterInSection:
时,section的header和footer都没有分割线。当tableView的样式为UITableViewGrouped时
section的header和footer都有一条完整的分割线。
tableHeaderView和tableFooterView
当tableView的样式为UITableViewStylePlain时,
可以使用self.tableView.tableFooterView = [UIView new];设置tablefooterView。
这能够删除tableView最底部的格外的分割线。当tableView的样式为UITableViewStyleGrouped时,self.tableView.tableFooterView = [UIView new];和self.tableView.tableHeaderView = [UIView new];不起作用。因为系统检测到高度为0时,会使用默认高度。
删除底部分割线
- 当tableView的样式为UITableviewPlain时,
tableView底部会有额外的分割线,有两种方法可以删除额外的分割线:
1.设置seciotnfooterView,可以删除所有section的header和footer的分割线
2.self.tableView.tableFooterView = [UIView new];删除底部分割线
sectionHeader和sectionFooter的浮动效果
- tableView的样式为UITableViewStylePlain的时候,secitonHeader和sectionFooter会浮动,而在样式为UITableViewStyleGrouped的时候,则不会。
背景色
当tableView的样式为UITableViewPlain时,tableView没有背景色。我并没有设置cell的背景色,但我明白cell为何会有一个白色的背景颜色。
当tableView的样式为UITableViewGrouped时,tableView为所有的cell提供默认的背景颜色和背景视图。可以通过方法
[UIColor groupTableViewBackgroundColor]
来获得该背景颜色。
背景视图为特定section中的所有cell提供可视分组
层次结构
- 此外在tableView上,还有一个UITableViewWrapperView,UITableViewWrapperView之上才是我们的UITableViewCell。