zoukankan      html  css  js  c++  java
  • UITableVIew 滚动流畅性优化

    影响UITableViewUITableView滚动的流畅性原因:

    1、 在代理方法中做了过多的计算占用了 UI 线程的时间

    2、同上

    3、Cell 中 view 的组织复杂,比如使用layer并不会有太大影响,但是如果layer使用了透明,或者圆角、变形等效果,就会影响到绘制速度。

     

    关于第一点,首先要明白 tableview 的代理(这里指 datasource 和 delegate 的那套方法,下同)方法的调用顺序,和时机。对于一般的应用会有如下顺序:

    1、向代理要 number Of Rows。

    2、对于每行向代理要 height For Row At Index Path。

    3、向代理要 当前屏幕可见的 cell For Row At Index Path 。(实测显示4寸屏的手机会取 屏幕显示数量+2,3.5寸屏同4寸屏数量,虽然3.5寸屏可显示的cell 数量要小于 4寸屏!)

    4、然后 cell 就显示出来了。

    tableView:heightForRowAtIndexPath:

    很多人都把优化的重点放到了 cell for row at indexpath 那个方法里了,在这里尽可能的少计算,但是却忽略了另一个很轻松就能提升加载时间的方法 :

    对于高度的计算,还有个小细节需要注意,就是如果 row 的高度都一定,那就删除代理中的这个 tableView:heightForRowAtIndexPath: 方法,设置 Table View 的 rowHeight 属性,相似的 numberOfRowsInSection: 系列的方法,我就不都写出来了。苹果的文档里介绍这样也可以减少了调用时间。

    在创建tableView方法时将行高设置 Table View 的 rowHeight 属性

    //设置tableView的行高为50,不要再写代理方法  如果高度不一样另外计算,这个方法只限行高一样的时候使用

    self.tableView.rowHeight=50;

  • 相关阅读:
    python 对比学习
    支付宝
    springboot logback
    ngnix学习视频
    node学习
    puppeteer 相关知识
    Dota2App--第三天
    Dota2APP--第二天
    Dota2APP--第一天
    iOS ---进阶之摇一摇
  • 原文地址:https://www.cnblogs.com/ithongjie/p/5020372.html
Copyright © 2011-2022 走看看