UITableView的拖动和滚动性能提升

如果UITableViewCell中需要加载图片或者其他需要耗时才能够获取的内容,则下面的方法可以提升性能,否则下面方法是没有意义的。

我们知道UITableView在滚动时松手以后,还会继续减速滚动一段时间到停止。我们能够提升性能的关键点就在于减速滚动的这段时间。

在拖动时由于用户可能会一直在查看内容,所以必须加载所有内容,但是滚动过程中得cell,由于用户根本无法看到全部内容,我们可以把一些耗时的内容不进行加载,这样就可以大大提升UITableView的滚动性能。


UITableViewDelegate 是 UITableView 的 delegate protocol,UITableView 的功能都是通过它的 delegate 方法实现的。了解这些方法被触发的条件及调用的顺序对于使用 UIScrollView 是很有必要的,其中拖动相关的 delegate 方法按调用顺序(不含didScroll)是这样的:

scrollViewWillBeginDragging:  
scrollViewWillEndDragging: withVelocity: targetContentOffset:  
scrollViewDidEndDragging: willDecelerate:  
scrollViewWillBeginDecelerating:  
scrollViewWillBeginDragging:  
scrollViewWillEndDragging: withVelocity: targetContentOffset:  
scrollViewDidEndDragging: willDecelerate:  
scrollViewWillBeginDecelerating:  
...
scrollViewWillBeginDragging:  
scrollViewWillEndDragging: withVelocity: targetContentOffset:  
scrollViewDidEndDragging: willDecelerate:  
scrollViewWillBeginDecelerating:  
scrollViewDidEndDecelerating:

从上面的执行顺序可以看出, scrollViewWillBeginDecelerating之后,可能执行scrollViewDidEndDecelerating,但是也可能执行scrollViewWillBeginDragging。如果是前一种情况,减速滑动直到停止,自然无需多说,如果是后一种情况,就会出现tableView的属性decelerating和dragging同时为true,需要注意具体使用情况。

我们先说提升性能的问题,首先在beginDraging到endDragging的时间段内,是必须加载所有内容的,因为用户一直在用手拖动列表,一旦缺少内容,就会影响展示效果;然后就是beginDecelerating到endDecelerating/beginDragging这段时间,由于这段时间是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值