UItableView Cell复用 重叠问题
2016-09-28 16:51
309 查看
UITableView是ios开发中使用率极高的一个控件,最近在弄的一个项目涉及到复杂图文混排
其中cell复用问题凸显出来了!
所谓复用表面意思来理解就是重复利用了。大致的工作原理就是:UITableView属于lazy loading,也就是只加载会在界面上显示的部分。举个例子,比如说UITabeview的调试是400,咱们每个Cell的调试是200,这样的话,手机界面上最多就显示两个Cell,当你向上划动,第一个Cel会由l一部分离开界面,第三个Cell的一部分出现在界面的时候会再创建第三个Cell。这个时候,当第二个Cell开始离开界面,第四个Cell出现的时候,这时候不会在继续创建,而是会直接复用的第一个Cell!也就是说无论你的UITableView里有五条或者十条数据,或者一百条数据都只会创建三个Cell来展示这些数据!
总的来说,这种工作机制从CPU和内存的角度考虑都很节省资源,系统消耗少。但是在这会出现一个问题就是:这种机制是用来展示结构一样的cell的!就是说,你的cell上的子控件一成不变,但是很多时候我们的需求并不是这样,像复杂的图文混排,基本每个cell的高度与样式都不一样。这个时候在Cell复用的机制下会出现重叠的现像。
举个简单的列子: 就是说假如一个没有图片的cell复用时从复用池拿得是有图片的cell
而如果没有做这个步骤:在复用前清除从复用池中拿过来的cell上的子控件,这样从复用池拿过来的cell的子控件就会再次显示在当前屏幕显示的cell上,所以当cell即将要呗复用时,需要清理下cell上所有draw和add的东西。
代码如下
而后在实现cell的复用
其中cell复用问题凸显出来了!
所谓复用表面意思来理解就是重复利用了。大致的工作原理就是:UITableView属于lazy loading,也就是只加载会在界面上显示的部分。举个例子,比如说UITabeview的调试是400,咱们每个Cell的调试是200,这样的话,手机界面上最多就显示两个Cell,当你向上划动,第一个Cel会由l一部分离开界面,第三个Cell的一部分出现在界面的时候会再创建第三个Cell。这个时候,当第二个Cell开始离开界面,第四个Cell出现的时候,这时候不会在继续创建,而是会直接复用的第一个Cell!也就是说无论你的UITableView里有五条或者十条数据,或者一百条数据都只会创建三个Cell来展示这些数据!
总的来说,这种工作机制从CPU和内存的角度考虑都很节省资源,系统消耗少。但是在这会出现一个问题就是:这种机制是用来展示结构一样的cell的!就是说,你的cell上的子控件一成不变,但是很多时候我们的需求并不是这样,像复杂的图文混排,基本每个cell的高度与样式都不一样。这个时候在Cell复用的机制下会出现重叠的现像。
举个简单的列子: 就是说假如一个没有图片的cell复用时从复用池拿得是有图片的cell
而如果没有做这个步骤:在复用前清除从复用池中拿过来的cell上的子控件,这样从复用池拿过来的cell的子控件就会再次显示在当前屏幕显示的cell上,所以当cell即将要呗复用时,需要清理下cell上所有draw和add的东西。
代码如下
而后在实现cell的复用
相关文章推荐
- UITableView-FDTemplateLayoutCell缓存cell高度时,cell重叠高度为0的问题解决
- UICollectionView与UITableView在复用时,数据重叠问题
- UITableView cell复用出错问题 页面滑动卡顿问题 & 各杂七杂八问题
- UITableView 的cell重叠问题
- 关于UITableView的cell复用问题的3种解决方法
- UICollectionView与UITableView在复用时,数据重叠问题
- iOS UITableView-FDTemplateLayoutCell框架 cell重叠 高度返回0.5问题解决
- iOS之如何处理TableView cell内容不一致以及cell复用重叠的问题
- 关于UITableView的Cell复用谈谈的一些心得
- UITableView cell上的button和label问题
- UITableView的Cell复用的解决
- 关于UITableView的Cell复用谈谈我的一些心得<滴水穿石>
- 问题记录 UITableView的cell之间的separator不见了
- 关于UITableView 不能回调 tableView: cellForRowAtIndexPath的问题
- 【ios】UITableView中的uitablviewcell在64位下显示重叠问题
- 解决iOS8下面UItableView里面的cell多分割线右移的问题
- 【控件】UITableView自定义cell时,设置控件frame问题
- 关于UITableView的Cell复用谈谈一些心得
- 关于UITableView的Cell复用
- UITableView 关于dequeueReusableCellWithIdentifier的问题