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/

TableCell高度的控制的更多相关文章

  1. Js控制Div在浏览器中的高度

    //需求是,我需要通过浏览器内容可视化的高度来控制div的高度boxheight(); //执行函数function boxheight(){ //函数:获取尺寸 //获取浏览器窗口高度 var wi ...

  2. 解决angular-deckgrid高度不均衡和重加载的问题

    在项目中使用angular-deckgrid+ng-infinite-scroll实现瀑布流的无限加载.但是实际测试中发现deckgrid有2个比较严重影响体验的BUG: 每次添加新的card,整个d ...

  3. 四轴飞行器飞行原理与双闭环PID控制

    四轴轴飞行器是微型飞行器的其中一种,相对于固定翼飞行器,它的方向控制灵活.抗干扰能力强.飞行稳定,能够携带一定的负载和有悬停功能,因此能够很好地进行空中拍摄.监视.侦查等功能,在军事和民用上具备广泛的 ...

  4. 基于CkEditor实现.net在线开发之路(3)常用From表单控件介绍与说明

    上一章已经简单介绍了CKEditor控件可以编写C#代码,然后可以通过ajax去调用,但是要在网页上面编写所有C#后台逻辑,肯定痛苦死了,不说实现复杂的逻辑,就算实现一个简单增删改查,都会让人头痛欲裂 ...

  5. DEDE建站之图片标签技巧指南

    做dede站的时候,曾经遇到很苦恼的事情,就是给图片集添加了一个网上下载下来的特效,需要给图片的链接上添加一个rel属性,供JS调用以达到那种特效.但是当时只知道dede的图片链接标签是[field: ...

  6. AutoCAD .NET API 之——DimStyleTableRecord 的属性列表

    DimStyleTableRecord Properties: Properties Description(描述) Dimadec 角度标注保留的有效位数 Dimalt 控制是否显示换算单位标注值中 ...

  7. 【PCB】电子元件封装大全及封装常识

    电子元件封装大全及封装常识 电子元件封装大全及封装常识 一.什么叫封装封装,就是指把硅片上的电路管脚,用导线接引到外部接头处,以便与其它器件连接.封装形式是指安装半导体集成电路芯片用的外壳.它不仅起着 ...

  8. 边界网关协议BGP

    Border Gateway Protocol (BGP) is a standardized exterior gateway protocol designed to exchange routi ...

  9. JS学习之DOM节点的关系属性封装、克隆节点、Dom中Style常用的一些属性等小结

    JS DOM节点: 在JS DOM中节点的关系被定义为节点的属性: 通常有以下几种节点之间的关系: (这里的关系是所有浏览器都支持的) parentNode    父节点 childNodes     ...

随机推荐

  1. Spring中Template模式与callback的结合使用浅析

    Spring不论是与ibatis,还是与Hibernate的结合中,都使用到了Template模式与callback技术,来达到简化代码实现的目的.Template模式也即模板模式,用于对一些不太变化 ...

  2. 深入探讨 Java 类加载器

    转自:http://www.ibm.com/developerworks/cn/java/j-lo-classloader/ 类加载器(class loader)是 Java™中的一个很重要的概念.类 ...

  3. 集算器协助java处理多样性数据源之MongoDB

    MongoDB不支持join,其官网上推荐的unity jdbc可以把数据取出来进行二次计算实现join运算,但这些join.group.函数.表达式等高级功能都是收费版才有,而且即使是收费版本,对子 ...

  4. html列表

    有序列表 <ol type="A", start="C"> <!--ordered list--> <li>第一项</ ...

  5. STL的erase()陷阱-迭代器失效总结

    下面材料整理自Internet&著作. STL中的容器按存储方式分为两类,一类是按以数组形式存储的容器(如:vector .deque):另一类是以不连续的节点形式存储的容器(如:list.s ...

  6. 标准C IO函数和 内核IO函数 效率(时间)比较

    前言 标准C提供的文件相关的IO函数,除标准错误输出是不带缓冲的(可以尽快的将错误消息显示出来)之外,所有与终端相关的都是行缓冲,其余都是全缓冲的. 我们可以使用setbuf,setvbuf改变指定流 ...

  7. 再学TSQL基础--单表查询

    本内容是我学习tsql2008的阅读笔记 什么是关系模型? 若对列创建唯一约束,背后中的物理机制也是创建了一个唯一索引. SQL语句的逻辑解析顺序是FROM WHERE GROUP BY HAVING ...

  8. [转]jquery Fancybox丰富的弹出层效果

    本文转自:http://www.helloweba.com/view-blog-65.html Fancybox是一款优秀的jquery插件,它能够展示丰富的弹出层效果.前面我们有文章介绍了facyb ...

  9. Quicksum-S.B.S.

    quicksum Queation: Given a string of digits, find the minimum number of additions required for the s ...

  10. 如何实现ZBrush中的Alt和Shift键的快速运用

    ZBrush是一个数字雕刻和绘画软件,它以强大的功能和直观的工作流程彻底改变了整个三维雕刻行业.在一个简洁的界面中,ZBrush®为当代数字艺术家提供了世界上最先进的工具.利用快捷键能使操作更快捷高效 ...