UItableView Cell复用 重叠问题

来源:互联网 发布:小学生机器人编程教程 编辑:程序博客网 时间:2024/06/05 10:20

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的复用



0 0
原创粉丝点击