iOS UITableview的cell自适应_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > iOS UITableview的cell自适应

iOS UITableview的cell自适应

 2016/10/28 5:33:32  ErShaoYe  程序员俱乐部  我要评论(0)
  • 摘要:背景:这几天做项目,又遇到了cell的自适应高度问题首先我们必须要知道UITableViewcell的代理执行顺序,在iOS7出现了一个代理方法叫:tableView:estimatedHeightForRowAtIndexPath:,首先我们要知道在使用UITableViewcell的时候必须计算cell的高度,那如果cell的内容是动态的呢?这个时候我们就必须动态的返回高度了,这就回到了我们项目中遇到的问题。知道了这一点,接下来我们就必须知道UITableViewde的代理方法的执行顺序
  • 标签:view iOS

背景:这几天做项目,又遇到了cell的自适应高度问题

首先我们必须要知道UITableViewcell 的代理执行顺序,在iOS7出现了一个代理方法叫:tableView: estimatedHeightForRowAtIndexPath:,首先我们要知道在使用UITableViewcell的时候必须计算cell的高度,那如果cell的内容是动态的呢?这个时候我们就必须动态的返回高度了,这就回到了我们项目中遇到的问题。知道了这一点,接下来我们就必须知道UITableViewde 的代理方法的执行顺序,分别如下图:

 

可以看到在执行cellForRowAtIndexPath之前是会先执行heightForRowAtIndexPath的,也就是说有可能cell不存在的时候就调用了heightForRowAtIndexPath,这样是无法满足项目要求的,直到iOS7出现的新的API,这就是上面讲的:tableView: estimatedHeightForRowAtIndexPath:,这个代理方法回给cell的一个预估高度,如果实现了这个方法,也就意味着UITableView的代理方法的执行顺序的改变,如下图:

 

 稍微整理一下就会得到如下结论:

  1. 首先tableView会先向代理拿得到每个cell的预估高度(estimatedHeightForRow...方法),并且拿这个高度去计算整个tableView应该显示的范围
  2. 根据每行预估的高度,算出一屏显示的cell的个数,并先对这些cell(调用cellForRow...方法)进行绘制
  3. 在绘制时拿到cell的真实高度,然后放在heightForRow...方法里面拿给tabelView去用
  4. 屏幕滚动(有cell进入屏幕)的时候,仍然会调用绘制以及获取真实高度的方法.

简单点说,就是预估高度用来让tableView心里有个底,把cell先绘制出来,但最后实际的cell高度还是会从heightForRow...方法中获取.


参考文献:

 

文/CoderAO(简书作者)
原文链接:http://www.jianshu.com/p/6ab92579fcf1
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
上一篇: 硅谷新闻6--下拉刷新/上拉加载更多 下一篇: 没有下一篇了!
发表评论
用户名: 匿名