zoukankan      html  css  js  c++  java
  • iOS-性能优化4

    UITableView性能优化技巧

    Table view需要有很好的滚动性能,不然用户会在滚动过程中发现动画的瑕疵。

    为了保证table view平滑滚动,确保你采取了以下的措施:

    • 正确使用`reuseIdentifier`来重用cells
    • 尽量使所有的view opaque,包括cell自身
    • 避免渐变,图片缩放,后台选人
    • 缓存行高
    • 如果cell内现实的内容来自web,使用异步加载,缓存请求结果
    • 使用`shadowPath`来画阴影
    • 减少subviews的数量
    • 尽量不适用`cellForRowAtIndexPath:`,如果你需要用到它,只用一次然后缓存结果
    • 使用正确的数据结构来存储数据
    • 使用`rowHeight`, `sectionFooterHeight` 和 `sectionHeaderHeight`来设定固定的高,不要请求delegate
    • 1.最常用的就是cell的重用, 注册重用标识符

    如果不重用cell时,每当一个cell显示到屏幕上时,就会重新创建一个新的cell

    如果有很多数据的时候,就会堆积很多cell。如果重用cell,为cell创建一个ID

    每当需要显示cell 的时候,都会先去缓冲池中寻找可循环利用的cell,如果没有再重新创建cell

    2.避免cell的重新布局

    cell的布局填充等操作 比较耗时,一般创建时就布局好

    如可以将cell单独放到一个自定义类,初始化时就布局好

    3.提前计算并缓存cell的属性及内容

    当我们创建cell的数据源方法时,编译器并不是先创建cell 再定cell的高度

    而是先根据内容一次确定每一个cell的高度,高度确定后,再创建要显示的cell,滚动时,每当cell进入凭虚都会计算高度,提前估算高度告诉编译器,编译器知道高度后,紧接着就会创建cell,这时再调用高度的具体计算方法,这样可以方式浪费时间去计算显示以外的cell

    4.减少cell中控件的数量

    尽量使cell得布局大致相同,不同风格的cell可以使用不用的重用标识符,初始化时添加控件,

    不适用的可以先隐藏

    5.不要使用ClearColor,无背景色,透明度也不要设置为0

    渲染耗时比较长

    6.使用局部更新

    如果只是更新某组的话,使用reloadSection进行局部更新

    7.加载网络数据,下载图片,使用异步加载,并缓存

    8.少使用addView 给cell动态添加view

    9.按需加载cell,cell滚动很快时,只加载范围内的cell

    10.不要实现无用的代理方法,tableView只遵守两个协议

     

  • 相关阅读:
    HDU 3951 (博弈) Coin Game
    HDU 3863 (博弈) No Gambling
    HDU 3544 (不平等博弈) Alice's Game
    POJ 3225 (线段树 区间更新) Help with Intervals
    POJ 2528 (线段树 离散化) Mayor's posters
    POJ 3468 (线段树 区间增减) A Simple Problem with Integers
    HDU 1698 (线段树 区间更新) Just a Hook
    POJ (线段树) Who Gets the Most Candies?
    POJ 2828 (线段树 单点更新) Buy Tickets
    HDU 2795 (线段树 单点更新) Billboard
  • 原文地址:https://www.cnblogs.com/LifeTechnologySupporter/p/5020010.html
Copyright © 2011-2022 走看看