你的位置:首页 > 软件开发 > 操作系统 > UITableView优化

UITableView优化

发布时间:2016-06-27 20:00:55
作为iOS开发,UITableView可能是平时我们打交道最多的UI控件之一,其重要性不言而喻。关于TableView,我想最核心的就是UITableViewCell的重用机制了。简单来说呢就是当TableView滚动时,会调tableView:cellForRowAtIndex ...

 

作为iOS开发,UITableView可能是平时我们打交道最多的UI控件之一,其重要性不言而喻。

关于TableView,我想最核心的就是UITableViewCell的重用机制了。

简单来说呢就是当TableView滚动时,会调tableView:cellForRowAtIndexPath:这个方法,TableView只会创建屏幕内或者只比屏幕多一点点的cell,当滚动需要展现新的cell的时候,TableView首先会把已经移出屏幕外的cell放入到缓存池中去,然后再从缓存池中取出新的cell用来展示,当缓存池中没有的时候,则会创建新的cell。但是cell可能不仅仅是一种,我们怎么来辨别我们需要的cell呢?苹果公司已经为我们做好了一切,我们只需要简单地设置一个identifier即可,TableView便可自动根据identifier从缓存池中去出相应cell出来复用。这样就极大的节省了内存的开销。

知道cell的复用原理后,我们再来看看TableView的回调方法。我们知道,TableView继承自UIScrollView,必须先确定它的contentSize和每个cell的位置,这样才能正确的放置每个cell。所以在创建或者复用cell之前,tableView会调用tableView:heightForRowAtIndexPath:来确定contentSize和每个cell的高度,之后再调用tableView:cellForRowAtIndexPath:显示相应的cell。然而此举对于那些成百上千不定高的cell,计算高度会相当消耗性能。

所以首先我们围绕cell来看看TableView如何进行优化

这里说一句,有很多人会在这里给cell进行赋值操作,绑定数据,但是最近看了一篇文章https://medium.com/ios-os-x-development/perfect-smooth-scrolling-in-uitableviews-fd609d5275a5#.373u9fh4p,里面说到不要在这个方法中进行数据绑定,因为TableView会为每个cell调用一次这个方法,它应该快速执行,我们应该快速的返回cell重用实例。我们可以在tableView:willDisplayCell:forRowAtIndexPath:这个方法中进行数据绑定。

2.cell的高度计算

这边我们分为两种cell,一种是定高的cell,另外一种是动态高度的cell

a.定高的cell,应该采用如下方式:

self.tableView.rowHeight = 88;

原标题:UITableView优化

关键词:ie

ie
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。