UITableView中tableHeadView的BUG

原创 2016年06月02日 10:00:48


1、BUG出现场景

      描述:这个BUG出现的很奇怪,我的代码风格在UITableView中自定义tableHeadView都是采用XIB,然后通过封装,直接这么调用:

    return [[[NSBundle mainBundle] loadNibNamed:@"TYLocationTableHeadView" owner:nil options:nil] lastObject];

      今天这种做法出现了问题,在XIB画图中,习惯控制死所有视图高度,然后将XIB拉的很长,而视图初始化完毕,直接采用Frame布局:

    UIView *headView = [TYLocationTableHeadView headView];
    containHeadView.backgroundColor = [UIColor redColor];
<pre name="code" class="objc">    headView.frame = cgrectmakexxxxxxx;
 self.tableView.tableHeaderView = containHeadView;


      这种写法,出现了问题,视图的实际尺寸很小,以前没有出现过是因为头部没有交互,而今天headView中有UIButton,造成无法点击,然后通过视图查看,看到视图实际的高度跟代码设置的高度不相等,到此问题算是发现了, 一个自动布局,一个frame布局,二者不等。


2、尝试解决一

      既然二种布局混合了,那改成一种布局不就OK了吗?

      全部采用frame的布局是肯定可以的,但是工作量太大,只有全部autolayout了,但是改完后发现,UITableView的tableHeadView的宽度不是跟tableivew宽度一样,

      这下日了狗了,高度固定,上,左,右间距为0,是一块小视图


3、终极解决

    既然固定frame可以,那我想到,先固定,视图弄出来先,然后出现 了固定大小的视图,接着再自动布局,等于在自定义XIB视图外部包装一层,看代码:

    CGFloat headViewHeight = cacheCitysArray.count == 0 ? (26 + 42) : (26 + 42) * 2;
    UIView *containHeadView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, headViewHeight)];
    containHeadView.backgroundColor = [UIColor redColor];
    self.tableView.tableHeaderView = containHeadView;
    TYLocationTableHeadView *headView = [TYLocationTableHeadView headView];
    headView.delegate = self;
    [containHeadView addSubview:headView];
    [headView autoPinEdgesToSuperviewEdgesWithInsets:UIEdgeInsetsZero];


4、最好思考

     以前问过一个老开发人员,什么时候用frame什么时候用autolayout,他说经验,现在也明白当初他说的,视图布局,没有哪种最好,只有最有效解决办法。



UITableView的headerView悬停解决方案

UITableView的section headerView悬停解决方案, 遮挡.

iOS解决tableview上滑headsection停留在顶部的问题

完美解决 self.mineUTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, ScreenWidth, Screen...

UItableView 点击cell跳转到其它界面延迟bug

最近在做项目等时候遇见一个bug,点击UITableView的Cell跳转到其他界面,经常会有延时,有时四五秒,有时会有十几秒。 查看网上也没有什么详细的介绍。iOS群里问也没有问出正确的答案。最后让...

xamarin学习笔记B07(ios的UITableView)

  • 2017年12月16日 15:23
  • 378.3MB
  • 下载

UITableView

  • 2017年05月19日 15:51
  • 239KB
  • 下载

iOS 基于MVVM设计模式练习UITableView使用 —— HERO博客

iOS 基于MVVM设计模式练习UITableView使用。

IOS UITableView及索引条源码

  • 2017年09月14日 15:34
  • 2.25MB
  • 下载

UITableView单选

  • 2015年08月25日 09:02
  • 61KB
  • 下载

为嵌套在左右滑动的UIScrollview上的UITableView增加滑动删除

转:http://www.tuicool.com/articles/jyU3Yzv 有一个界面,底部是一个UIScrollview,然后通过addSubView的方式 add...

UITableView教材

  • 2012年04月19日 12:43
  • 928KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UITableView中tableHeadView的BUG
举报原因:
原因补充:

(最多只允许输入30个字)