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 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,267评论 4 61
  • 版权声明:未经本人允许,禁止转载. 1. TableView初始化 1.UITableView有两种风格:UITa...
    萧雪痕阅读 2,920评论 2 10
  • 程序猿最烦两件事,第一件事是别人要他给自己的代码写文档,第二件呢?是别人的程序没有留下文档。 1.『浅入浅出』My...
    极乐叔阅读 125评论 0 0
  • 领导,您好!今天听到了一个关于您的好消息——结束异地工作,恭喜您! 听到这个消息,又高兴又失落的情绪围绕了...
    善良蜜罐儿阅读 232评论 1 1
  • 这个假期长达8天,是我有史以来最愉快的一个假期,虽然十五那天我感冒了。 虽然我感冒了,但不能影响我的革命热情,因为...
    mimi播报阅读 350评论 2 4