利用UITableViewDelegate署理方法来设置header或footer时要注意的细节

源代码 2024-10-6 13:17:00 86 0 来自 中国
题目形貌

利用UITableViewDelegate署理方法来设置header或footer时要注意了。
- (UIView *)tableViewUITableView *)tableView viewForFooterInSectionNSInteger)section {    return [UIView new];}- (CGFloat)tableViewUITableView *)tableView heightForFooterInSectionNSInteger)section {    return 1;}- (UIView *)tableViewUITableView *)tableView viewForHeaderInSectionNSInteger)section {    return [UIView new];}- (CGFloat)tableViewUITableView *)tableView heightForHeaderInSectionNSInteger)section {    return 1;}UITableView在UI布局中利用的场景很多,好比下图:

1.jpg
利用场景:让UITableView的contentSize的高度和父控件的高度划一。

  • 没有利用分组(即没有设置header或footer),这个时候通过获取UITableView的contentSize的高度来设置父控件的高度,体现出来的结果是正常的;
  • ⚠️⚠️利用了分组(即设置了header或footer),这个时候通过获取UITableView的contentSize的高度来设置父控件的高度,体现出来的结果是不正常的;
剖析

举例:当我们利用UITableViewDelegate署理方法来设置footer时,先调用
- (CGFloat)tableViewUITableView *)tableView heightForFooterInSectionNSInteger)section;,
然后调用
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section;,
但是当我们设置footer的高度为0或CGFLOAT_MIN时,实验完
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section;,
就不会调用
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section;,
以是这个时候通过获取UITableView的contentSize的高度来设置父控件的高度,体现出来的结果是不正常了。
办理方案

当我们利用UITableViewDelegate署理方法来设置header或footer时,只管不要给header或footer的高度设为0或CGFLOAT_MIN,应该设置一个很小的高度,eg:1,2...。
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-11-21 21:05, Processed in 0.187871 second(s), 36 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表