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 图),这一步就很容易会卡一下。这也就是为什么我说图片要放到后台进程去解码完之后(解码是可以后台做的!很多“大神”居然都不知道这一点),再拿来显示(显示只能在主线程做)的原因。

41.影响屏幕适配的因素及tableview的ContentSize不正确的问题

上一节说了屏幕适配, 这节来说说影响iOS6与iOS7屏幕适配的参数和因素都有哪些.其中包括UIViewController 的属性: automaticallyAdjustsScrollViewIn...
  • wangyanchang21
  • wangyanchang21
  • 2016年03月17日 19:42
  • 1203

ios 8 UITableView 编辑删除状态不点击“删除”,页面假死临时解决方案

ios8 UITableView 中编辑删除状态(isEditing:YES)不点击“删除”按钮点击其他位置,UITableView会假死,不可滑动,点击无效而userInteractionEnabl...
  • f10_s
  • f10_s
  • 2015年01月08日 09:37
  • 1955

【技巧】UITableView 在UITableViewStylePlain模型下,取消headerView的黏结性,不浮动

UITableView使用UITableViewStylePlain样式时,section的header与footer会在滚动过程中固定在顶部,这个交互很不错。如果要阻止这个交互,那么办法有四个: ...
  • hherima
  • hherima
  • 2016年04月01日 10:36
  • 3311

xamarin学习笔记B07(ios的UITableView)

  • 2017年12月16日 15:23
  • 378.3MB
  • 下载

UICollectionView,UITableView用法

  • 2018年01月10日 14:10
  • 111KB
  • 下载

UITableView-Swift

  • 2014年10月22日 16:34
  • 52KB
  • 下载

IOS 本地图片 uitableview 瀑布流 沙盒功能

  • 2014年09月19日 09:47
  • 193KB
  • 下载

UITableview处理键盘遮挡

  • 2013年08月25日 22:13
  • 26KB
  • 下载

封装了一个带上下刷新功能的table(UITableView子类)

  • 2012年12月28日 16:55
  • 44KB
  • 下载

代码实现 UITableView与UITableViewCell

  • 2012年07月07日 17:49
  • 105KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UITableView 的常识
举报原因:
原因补充:

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