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。
使用步骤:
- 先指定估算高度
self.tableView.estimatedRowHeight = 80
(强制必须设置) - 设置行高
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高度的控制的更多相关文章
- Js控制Div在浏览器中的高度
//需求是,我需要通过浏览器内容可视化的高度来控制div的高度boxheight(); //执行函数function boxheight(){ //函数:获取尺寸 //获取浏览器窗口高度 var wi ...
- 解决angular-deckgrid高度不均衡和重加载的问题
在项目中使用angular-deckgrid+ng-infinite-scroll实现瀑布流的无限加载.但是实际测试中发现deckgrid有2个比较严重影响体验的BUG: 每次添加新的card,整个d ...
- 四轴飞行器飞行原理与双闭环PID控制
四轴轴飞行器是微型飞行器的其中一种,相对于固定翼飞行器,它的方向控制灵活.抗干扰能力强.飞行稳定,能够携带一定的负载和有悬停功能,因此能够很好地进行空中拍摄.监视.侦查等功能,在军事和民用上具备广泛的 ...
- 基于CkEditor实现.net在线开发之路(3)常用From表单控件介绍与说明
上一章已经简单介绍了CKEditor控件可以编写C#代码,然后可以通过ajax去调用,但是要在网页上面编写所有C#后台逻辑,肯定痛苦死了,不说实现复杂的逻辑,就算实现一个简单增删改查,都会让人头痛欲裂 ...
- DEDE建站之图片标签技巧指南
做dede站的时候,曾经遇到很苦恼的事情,就是给图片集添加了一个网上下载下来的特效,需要给图片的链接上添加一个rel属性,供JS调用以达到那种特效.但是当时只知道dede的图片链接标签是[field: ...
- AutoCAD .NET API 之——DimStyleTableRecord 的属性列表
DimStyleTableRecord Properties: Properties Description(描述) Dimadec 角度标注保留的有效位数 Dimalt 控制是否显示换算单位标注值中 ...
- 【PCB】电子元件封装大全及封装常识
电子元件封装大全及封装常识 电子元件封装大全及封装常识 一.什么叫封装封装,就是指把硅片上的电路管脚,用导线接引到外部接头处,以便与其它器件连接.封装形式是指安装半导体集成电路芯片用的外壳.它不仅起着 ...
- 边界网关协议BGP
Border Gateway Protocol (BGP) is a standardized exterior gateway protocol designed to exchange routi ...
- JS学习之DOM节点的关系属性封装、克隆节点、Dom中Style常用的一些属性等小结
JS DOM节点: 在JS DOM中节点的关系被定义为节点的属性: 通常有以下几种节点之间的关系: (这里的关系是所有浏览器都支持的) parentNode 父节点 childNodes ...
随机推荐
- selinux开启关闭
查看SELinux状态: 1./usr/sbin/sestatus -v ##如果SELinux status参数为enabled即为开启状态 SELinux status: ...
- HTTP 协议的头部
转自:http://network.51cto.com/art/201509/490594.htm HTTP首部字段有四种类型:通用首部字段,请求首部字段,响应首部字段,实体首部字段. 通用首部字段: ...
- 用js获取当前页面的url的相关信息方法
当前页面对应的URL的一些属性: ( http://bbs.xxx.net/forum.php?mod=viewthread&tid=2709692&page=1&extra= ...
- 关于Redis持久化
Redis有两种持久化的方式:快照(RDB文件)和追加式文件(AOF文件) RDB持久化方式是在一个特定的间隔保存某个时间点的一个数据快照. AOF(Append only file)持久化方式则会记 ...
- HDU 4044 GeoDefense(动态规划)
GeoDefense Time Limit: 12000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...
- Oracle数据库十大常见性能问题
错误的连接管理 oracle的连接是耗时耗力的操作,不应像sqlserver那样使用连接 错误的使用游标和共享池 一般是没有使用绑定变量 不好的SQL语句 使用大量资源的SQL语句都应该好好检查是否可 ...
- 烂泥:KVM快照的创建与恢复
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 因为要做有关KVM虚拟机的实验,所以需要虚拟机生成快照.查询相关资料,说KVM可以使用两种方法生成虚拟机的快照. 方法一.使用qemu-img snap ...
- Lighttpd
一.简介 Lighttpd 是一个德国人领导的开源Web服务器软件,其根本的目的是提供一个专门针对高性能网站,安全.快速.兼容性好并且灵活的web server环境.具有非常低的内存开销,cpu占用率 ...
- python module getopt usage
import getopt import sys def usage(): print 'this is a usage.' def main(): try: print sys.argv #sys. ...
- C++ new(2)
1. new与operator new C++中有很多语法让人难以理解,如:new operator(操作符,下同)和operator new之间差异,确切的说,应该是new与operator new ...