UITableView:改变 TableHeaderView 的高度
2016-03-28 12:39
489 查看
有这么一种需求,在列表顶端显示一些别样的数据,而这个别样的数据则需要通过一个别样的 View 来展现,它便是 UITableView 的 tableHeaderView。
倘若 tableHeaderView 里的内容很固定,高度不要随着内容的不同而改变,这样还好。
如果,高度是需要动态改变的,某些人(比如我)可能就会遇到这样一个难题:
已经给 view 中的每个子 view 设置过值了,高度算过了,frame 也重新设置过了,可 tableHeaderView 的高度却还是之前的高度,没有变化。内容变多,则会有一部分看不见了;内容变少,则有一部分空白,放在那里实在不好看。
怎么办??
view 作为 tableView 的 tableHeaderView,单纯的改变 view 的 frame 是无济于事的,tableView 不会大度到时刻适应它的高度(以后 Apple 会不会改变就不知道了),所以,如何告诉tableView 它的 tableHeaderView 已经改变了?很简单,就一句话(关键最后一句):
这样以后,效果就出来了。不过这种过度显得有些生硬,能不能加一点点动画,让它变得顺眼一些呢?试试下面的代码:
倘若 tableHeaderView 里的内容很固定,高度不要随着内容的不同而改变,这样还好。
如果,高度是需要动态改变的,某些人(比如我)可能就会遇到这样一个难题:
已经给 view 中的每个子 view 设置过值了,高度算过了,frame 也重新设置过了,可 tableHeaderView 的高度却还是之前的高度,没有变化。内容变多,则会有一部分看不见了;内容变少,则有一部分空白,放在那里实在不好看。
怎么办??
view 作为 tableView 的 tableHeaderView,单纯的改变 view 的 frame 是无济于事的,tableView 不会大度到时刻适应它的高度(以后 Apple 会不会改变就不知道了),所以,如何告诉tableView 它的 tableHeaderView 已经改变了?很简单,就一句话(关键最后一句):
//提前获得约束后的headBgView的bounds [self.headBgView setNeedsLayout]; [self.headBgView layoutIfNeeded]; CGRect newFrame = headerView.frame; newFrame.size.height = newFrame.size.height + webView.frame.size.height; headerView.frame = newFrame; [self.tableView setTableHeaderView:headerView];
这样以后,效果就出来了。不过这种过度显得有些生硬,能不能加一点点动画,让它变得顺眼一些呢?试试下面的代码:
[self.tableView beginUpdates]; [self.tableView setTableHeaderView:headerView]; [self.tableView endUpdates];
相关文章推荐
- poj2478 Farey Sequence (欧拉函数)
- 【开源项目13】Volley框架 以及 设置request超时时间
- 自定义弹窗
- 新手色彩三刀流UI界面配色
- Java中String判断相等equals与==的区别以及StringBuilder的equals
- StringBuilder 和StringBuffer的理解
- mysql:慢查询日志slow_query_log
- Android4.42-Settings源码分析之蓝牙模块Bluetooth整体实现(总)
- “四核”驱动的“三维”导航 -- 淘宝新UI(需求分析篇)
- ios-消息弹框之UIAlertView, UIActionSheet以及UIAlertController小结
- uestc1133菲波拉契数制
- UIButton常用属性总结
- Unique Binary Tree
- Hadoop 数据类型与文件结构剖析 Sequence, Map, Set, Array, BloomMap Files
- UIDatePicker - 日期选择器
- 用阻塞队列LinkedBlockingQueue实现生产者消费者先进先出
- 【MUI】动态索引列表实现【搜索有效的方法】
- 环信 Ease3.0SDK 与EaseUI3.0 集成汇总 (卡壳的朋友们可以看看,已顺利集成成功)
- easyUI自带的时间插件日期选择、月份选择、时间选择的使用
- 安卓原生操作数据库时,使用ContentValues类