UITableView 的常识

转载 2015年07月10日 14:09:37
如果你想要如丝般顺滑的效果,那么:
1、每次都看一下有没有能重用的 cell,而不是永远重新新建(这个是 UITableView 的常识)
2、Cell 里尽量不要用 UIView 而是全部自己用 drawRect 画(之前因为 iOS 有 bug,这样做会有性能上质的飞越。也有很多大神写过很多文章解释原理,有兴趣的自己去看看吧我就不做复制粘贴了。后来 iOS 也改掉了这个问题,这么做的效果就没那么明显了。)
3、图片载入放到后台进程去进行,滚出可视范围的载入进程要 cancel 掉
4、圆角、阴影之类的全部 bitmap 化,或者放到后台 draw 好了再拿来用
5、Cell 里要用的数据提前缓存好,不要现用现去读文件
6、数据量太大来不及一次读完的做一个 load more cell 出来,尽量避免边滚边读数据,这样就算是双核的 CPU 也难保不会抽

做到以上6条的话,应该就能做出很顺畅的滚动了(现在的 Twitter 官方客户端的原作者写过一篇文章,总结起来也无非就是我说的前3条,可以找来看看)。

Path 2.5 的那个滚动说实在的不是很顺畅,图片显示出来的时候都会抽一下,他们还有很大的改进余地。

对于3的补充说明:UIImageView 的载入是惰性的说法,是对的。但是大部分开发者都没有正确理解这一点。下面就详细解释一下:
[UIImage imageWithContentOfFile:] 出来的 UIImage 其实并没有真正把文件解码到内存,而是要等到用的时候(例如去显示或者去 scale)才会去做这件事情。但问题就在于 UIImageView 试图去 draw 图片的时候,它读文件、渲染也是在主线程里做的,所以你要读入的图片如果很大(比如 iPad3 上的 @2x 图),这一步就很容易会卡一下。这也就是为什么我说图片要放到后台进程去解码完之后(解码是可以后台做的!很多“大神”居然都不知道这一点),再拿来显示(显示只能在主线程做)的原因。

相关文章推荐

UITableView

  • 2017-05-19 15:51
  • 239KB
  • 下载

IOS UITableView及索引条源码

  • 2017-09-14 15:34
  • 2.25MB
  • 下载

一些网络常识的理解

Num01–>什么是协议? 为了解决不同种族人之间的语言沟通障碍,现规定国际通用语言是英语,这就是一个规定,这就是协议。 那么在计算机领域中,都遵守一个网络通信协议就是:TCP/IP协议...

UITableView

  • 2014-09-06 13:01
  • 19KB
  • 下载

MATLAB的基本运算以及常识

MATLAB一种科学计算工具和编程语言MATLAB的基本运算以及常识 1、初步具备将一般数学问题转化成对应的计算机模型并进行处理的能力。  1.1 科学工程计算与MATLAB  1.2 基...

swift UITableView 闭包 block

  • 2015-07-10 12:49
  • 61KB
  • 下载

UITableView教材

  • 2012-04-19 12:43
  • 928KB
  • 下载

生活常识(一) 一个手机号能泄露这么多信息?

手机号码组成基础知识: 国家(地区)码+网号+H0H1H2H3+ABCD 最大位长为15位,目前的长度为13位。 例如: 86 139 0123 4567 (也就是说,严格意义上,我们的手机号...

IOS UITableView下拉刷新控件

  • 2013-10-18 14:20
  • 850KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)