动态设置UITableView的cell高度(old)
来源:互联网 发布:java报表开发工具 编辑:程序博客网 时间:2024/05/22 13:57
本项目很多页面需要动态设置UITableView的cell的高度,在cell中内容比较简单时,比如cell只有一个UILabel,可以用boundingRectWithSize这样的方法直接计算UILabel的高度,但当cell结构比较复杂时就比较困难了。
网上看到一些办法,有人提出了如下方案:
1、在table的cellForRowAtIndexPath中,得到cell的同时设置cell的高度,比如:
//设置cell高度 CGRect cellFrame = [cell frame]; cellFrame.size.height = cell.friendActionView.frame.size.height; [cell setFrame:cellFrame];
2、在table的heightForRowAtIndexPath中得到上述cell的高度:
UITableViewCell *cell = [self tableView:tableView cellForRowAtIndexPath:indexPath]; <span style="white-space:pre"></span>return cell.frame.size.height;
事实证明这种方法是行不通的。主要问题是heightForRowAtIndexPath这个委托的调用时机是早于cellForRowAtIndexPath这个委托方法的(此方法在UITableViewDataSource中定义)。如果按这样调用,会导致无限递归调用引发的堆栈溢出。解决方案有两种:
1、通过设置tableView的delegate解决。如下:
tableView.delegate=nil;UITableViewCell *cell=[tableView cellForRowAtIndexPath:indexPath];tableView.delegate=self;
2、在heightForRowAtIndexPath方法中,生成一个demoCell,通过绘制这个cell并得到其高度,就可以知道真正的cell高度。
最后我们的项目中使用的是方案一,因为考虑到cell的内容比较复杂,每一行都重绘一次开销很大。(实际使用的时候发现还是会调用两次,但不会引起递归调用了)
0 0
- 动态设置UITableView的cell高度(old)
- 几种设置UITableView的cell动态高度的方法
- UITableView的cell 动态 定义 高度
- UITableView的cell 动态 定义 高度
- iOS UITableView Cell的动态高度实现
- iOS8 UITableView动态加载cell的高度
- 【iOS】UITableView 动态确定cell的高度
- 动态设置Cell的高度
- 动态设置uitableView的高度
- UITableView动态改变Cell高度
- UITableView动态改变Cell高度
- 总结了几种设置UITableView的cell动态高度的方法
- UITableView 如何不动态计算返回的cell 的高度
- UITableView 如何不动态计算返回的cell 的高度
- UITableView中动态返回自定义cell的高度
- Swift之动态适配UITableView的cell高度
- ios 动态设置Cell的高度
- UITableView的cell自适应高度
- IndiaHacks 2016 - Online Edition (Div. 1 + Div. 2) B. Bear and Compressing 暴力
- 3813: 奇数国|树状数组|欧拉函数
- caffe入门学习:caffe.Classifier的使用
- Ext小技巧:Ext.encode和Ext.urlEncode的使用场景
- 【类型转换】list集合之再认识
- 动态设置UITableView的cell高度(old)
- TCP:状态控制码
- SVD:奇异值分解
- filter过滤器 的初步使用,以及他的基本应用
- 关于 Java 中 正则表达式的 MULTILINE 标志
- IndiaHacks 2016 - Online Edition (Div. 1 + Div. 2) A. Bear and Three Balls 水题
- 开始leetcode吧,加油
- 电信版 RG100A-AA 路由器的破解和应用
- win7 快捷键