zoukankan      html  css  js  c++  java
  • iOS_UITableView性能优化那些事

    UITableView在实际开发中使用频率实在是很高, 因此, UITableView的性能优化是必不可少的, 本文下面就略微总结一下UITableView性能优化那些事.

    本文着重介绍具体方法, 原理的话在文章最后会给出一些链接, 有兴趣可以自行查看.

    1. 关于数据绑定

    很多新加入iOS的朋友喜欢把数据绑定写入在UITableView Data Source方法 

    - (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath

    里面. 这并不是十分之准确的, 因为这时候的cell还没有被实际产生, 试着把数据绑定写在 

    - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath;

    这个方法上, 因为这时候cell已经被创建而且正在准备显示到界面上了.

    2. 关于cell的重用.

    cell的重用是苹果官方就一再推荐的, 所以保证自己创建的cell是重用的会对性能提升有很大的帮助.

    3. 关于高度计算

    高度计算的方法如果调用多次, 对性能损耗是肯定的. 当然如果你的高度是定死的话, 就不会出现这个问题. 如果不是的话, 那么你可能需要自己设计一个方法, 把每个需要显示的cell的高度先计算出来, 然后再设置cell高度的时候直接调用.

    提供一个计算cell内容高度的方法(截取网上的):

    image

    然后高度设置可以在下面实现:

    image

    4. 关于AutoLayout

    尽管苹果官方推荐使用autoLayout进行程序开发, 但是autoLayout会带来性能的一些损耗, 当然, 如果你的程序对性能要求不是很高的话, 用autoLayout进行开发也是很方便的.

    5. 关于CPU和GPU的调度使用

    各种透明度, 圆角等layer的属性都会引起性能损耗.

    所以, 可以试着不要直接设置图片的圆角, 先异步获取图片, 调用CoreGraphics 处理好图片再返回

    这样你的图片处理就交给了后台而不会影响到你程序的流畅性了

    6. 关于其他优化方法

    可以试着使用这个 https://github.com/facebook/AsyncDisplayKit 框架, 框架集成了大量异步操作, 把UIView -> CALayer 转变成 CAlayer -> Node, 这样的轻量级控件加上异步操作, 会使你的程序性能更上一层楼.

    附上一些链接:

    1. http://blog.ibireme.com/2015/11/12/smooth_user_interfaces_for_ios/

    2. http://southpeak.github.io/blog/2015/12/20/perfect-smooth-scrolling-in-uitableviews/

    然后推荐几个喜欢的技术博客吧:

    1. http://blog.ibireme.com

    2. http://www.superqq.com

    3. http://southpeak.github.io

    4. http://www.cnblogs.com/dsxniubility

    最后, 最近apple pay好像挺火的. 转一篇之间的文章:

    http://www.cnblogs.com/easyToCode/p/5196328.html

  • 相关阅读:
    ubuntu 14.04 LTS 163更新源
    Windows 2008R2 修改SID
    ubuntu14 使用rsync远程备份文件
    vim常用
    Ubuntu创建lvm
    Windows 迁移本地用户配置文件到域用户
    Linux scp使用
    Centos 7 修改网卡名称、静态IP
    Axel多线程工具安装
    testlink 1.9.19安装
  • 原文地址:https://www.cnblogs.com/easyToCode/p/5200400.html
Copyright © 2011-2022 走看看