iOS TableView Header、Footer高度异常问题

由于历史原因,项目中只有一个Controller,有相机等其他耗性能的功能,其他的页面都是以View的形式Add上去,出现了几个关于tableView的UI问题,记录下可能的情况以及解决方案。

注:以下出现的都是公司项目里出现过的,解决方案可能只适用上述的项目结构中,请读者自行分辨。

一、tableViewHeader/tableFooterView设置后出现高度莫名减少64/49

处理方式:
1)先检查约束是否正确,出现这种特殊偏差往往是约束不对。如果是frame和autolayout混用则检查起父控件的autolayout。
2)不要使用tableView.tableFooterView = footerView;的方式换用[tableView setTableFooterView:footerView]调用。理论上这两个是同样的,实际使用时偶现效果不同的情况。
3)在- (void)drawRect:(CGRect)rect中重新设置Frame
4)在- (void)layoutSubviews中重新设置Frame
5)使用以下方式直接设置frame

    CGRect frame = self.tableView.tableFooterView.frame;
    frame.size.height = 120;
    self.tableView.tableFooterView.frame = frame;

6)使用以下方式间接设置frame

    UIView *footerV = [UIView new];
    footerV.frame  = CGRectMake(0, 0, 120, 120);
    self.tableView.tableFooterView = footerV;

7)组合使用上述几种方案
如在3)中和5)一起使用,3)中和6)一起使用

分析原因:可能都是layout引起的问题,由于项目结构的原因出现了这些高度异常。在普通项目中并没有出现。

二、其他UI显示异常

1.Plain模式下出现快速上下滑动出现sectionHeader突然卡在屏幕中间

折中处理:改为Groupe模式。
原因分析:可能是项目中出现耗性能的东西导致在计算section位置出现异常导致,代码上没有想到更好的方案,目前折中处理。

2.Group模式下出现header和footer出现了多余的部分

处理方法:在heightForHeader和heightForFooterInSection方法中返回0.01,不要返回0可解决。
原因分析:Group模式下section默认是有高度的,设置为0则会触发显示默认高度。

你可能感兴趣的:(iOS TableView Header、Footer高度异常问题)