• TableCell高度的控制


    TableCell高度的控制

    计算并指定行高rowHeight

    • 强制指定:self.tableView.rowHeight = 88
    • 或实现UITableViewDelegate.tableView(..heightForRowAtIndexPath) -> CGFloat方法动态指定每行行高
      此时rowHeight的设置将视为无效

    估算高度estimatedRowHeight(iOS7)

    设置方式与一般cell高度设置类似。

    提供高度估算值可延迟未显示cell的实际高度计算,不使用时在table加载时马上执行所有cell的高度计算,以提供进度条的长度依据。

    但实际运行时会一边加载显示cell,一边运算当前准备显示的cell实际高度,从而导致界面卡顿以及进度条跳跃变化。

    开启估算后有助于减少cell高度计算的总次数。

    self-sizing cell(iOS8)

    新特性:自计算高度cell。

    使用步骤:

    1. 先指定估算高度 self.tableView.estimatedRowHeight = 80 (强制必须设置)
    2. 设置行高 self.tableView.rowHeight = UITableViewAutomaticDimension (实际上已经是默认值,可省略设置)

    已知问题

    不论使用UITableViewDelegate还是 self-sizing 方式指定行高:
    iOS7 中cell高度具有缓存机制,实际高度计算次数与数据总量相关,满足要求后不再重新计算,不影响View回收。
    iOS8 中则每次显示cell都将执行一次新的高度计算,以支持cell的动态高度变化需求,但会导致明显的滑动卡顿。

    第三方 UITableView + FDTemplateLayoutCell

    第三方组件方案,既有iOS8 self-sizing功能简单的API,又可以达到iOS7流畅的滑动效果,还保持了最低支持iOS6。

    类似iOS7中提供cell高度缓存,并且在数据更新后对失效部分的缓存进行标记重计算。

    cell的高度缓存会在UITableView没有滑动的空闲时刻执行计算,保证滑动流畅性。

    参考:http://blog.sunnyxx.com/2015/05/17/cell-height-calculation/

  • 相关阅读:
    2018 11.15
    25 个精美的后台管理界面模板和布局
    Python3学习笔记(urllib模块的使用) brady
    Entity Framework学习
    我知道的泛型
    重温设计模式之工厂和抽象工厂
    ORM(O/R Mappping)学习
    我知道的委托
    项目中的分布式站点缓存刷新实现
    c#操作xml
  • 原文地址:https://www.cnblogs.com/wavky/p/5722796.html
Copyright © 2020-2023  润新知