• TableVie优化方法和优化机制


    1,UITableview的优化方法(缓存高度,异步绘制,减少层级,hide,避免离屏渲染)

    (1)缓存高度:当我们创建frame模型的时候,计算出来cell的高度的时候,我们可以将cell的高度缓存到字典里面,以cell的indexpath和Identifier作为为key。

    异步绘制

    在Cell上添加系统控件的时候,实质上系统都需要调用底层的接口进行绘制,当我们大量添加控件时,对资源的开销也会很大,所以我们可以索性直接绘制,提高效率。

    (2)减少层级

    减少SubViews的数量, 在滑动的列表上,多层次的view会导致帧数的下降。
    例如: 绘制cell 不建议使用UIView,建议使用CALayer。

     

    (3)Hide(显示隐藏)

    尽量少用addView给Cell动态添加View,可以初始化时就添加,然后通过hide来控制是否显示

    (4)避免离屏渲染

    为了保证TableView的流畅,当快速滑动的时候,cell必须被快速的渲染出来。所以cell渲染的速度必须快。如何提高cell的渲染速度呢?

    • 当有图像时,预渲染图像,在bitmap context先将其画一遍,导出成UIImage对象,然后再绘制到屏幕,这会大大提高渲染速度。具体内容可以自行查找“利用预渲染加速显示iOS图像”相关资料。
    • 渲染最好时的操作之一就是混合(blending)了,所以我们不要使用透明背景,将cell的opaque值设为Yes,背景色不要使用clearColor,尽量不要使用阴影渐变等
    • 由于混合操作是使用GPU来执行,我们可以用CPU来渲染,这样混合操作就不再执行。可以在UIView的drawRect方法中自定义绘制。

    (5)还有其他的优化方法:

      • 正确地使用UITableViewCell的重用机制
      • 避免阻塞主线程
      • 按需加载
      • 尽可能重用开销比较大的对象
      • 尽量减少计算的复杂度
  • 相关阅读:
    sql server 2008 express 使用ip登陆 error:40 错误:2
    C#将Enum枚举映射到文本字符串
    Qt 自定义事件
    constexpr-C++11
    C++11 Lambda表达式(匿名函数)
    Qt5-调试器安装
    Qt5之坐标系统
    八大排序算法总结
    Qt之类反射机制
    Qt5之反射机制(内省)
  • 原文地址:https://www.cnblogs.com/FZP5/p/10019242.html
Copyright © 2020-2023  润新知