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 ...
随机推荐
- ip_forward
查看 cat /proc/sys/net/ipv4/ip_forward 如果是0表示没开启,1表示开启了 临时修改 echo "1" > /proc/sys/net/ ...
- Windows Server 2012之搭建域控制器DC
安装域控制器,域(Domain) 1,本地管理员权限 2,设置静态IP 地址 3,至少有一个NTFS分区 4,操作系统版本(web版除外) 设置静态IP地址 dcpromo.exe命令不生效 ...
- Effective Java 07 Avoid finallizers
NOTE Never do anything time-critical in a finalizer. Never depend on a finalizer to update critical ...
- 烂泥:KVM、kickstart与FTP集成
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 在上一篇文章中,我们介绍了有关KVM.kickstart与NFS集成的相关内容.在这节我们将继续介绍FTP与KVM.kickstart集成的相关操作. ...
- 烂泥:KVM虚拟机的关机与开启
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 我们在开启与关闭KVM虚拟机时,一般是通过start.shutdown.reboot等命令来进行.但是有时候我们会发现在使用shutdown.reboo ...
- Centos7 配置网络步奏详解
Centos7 配置网络步奏详解 编辑网卡配置文件 vi /etc/sysconfig/network-script/ifcfg-ens01 备注:这里的ens01不是所有系统都叫这个,有的可能叫其他 ...
- Django WSGI Error:class.__dict__ not accessible in restricted mode
一.问题 今天网站出了一个错误: RuntimeError at /index.html class.__dict__ not accessible in restricted mode 二.原因 用 ...
- 编写JS代码的“use strict”严格模式及代码压缩知识
Javascript的语法比较松散,大家对该门语言的印象可能是“简单”,我认为这恰恰相反.使用严格模式能防止你写出粗制滥造的语法代码来.应用了严格模式后尽管控制台报告的某些错误需要很大精力排除,但是从 ...
- 如何为自己的项目在pycharm中设置debug?
比方说我们的某一个项目运行需要走这个指令: (MyObject)blaxon@debian:~/Desktop/checkmato$ python checkmato/nose_plugin/plug ...
- Matlab手册翻译
MATLAB 语言是一种工程语言,语法很像 VB 和 C,比 R 语言容易学,你知道 R 语言的语法有多糟糕么.同样,相对于 Python,MATLAB 的优点是天生为了算而算,数与数之间的运算就是矩 ...