UITableViewCell 动态高度的调整

需求: 可变的表格高度。动态的加载的数据,同时支持reloadData.

第一个想法:- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 调用

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

这样的话就会造成cellForRowAtIndexPath用两遍,性能先不说会不会出现什么BUG。


网上找资料: 来自高勇  http://gaoyong.diandian.com/post/2012-08-14/40036292960  

操作方法:

需要在因UITableView 的datasource变化后,导致某一个确定的cell需要被
reload (reloadRowsAtIndexPaths). reload 后需要在该cell中添加一些竖型排列子视图 (addsubview)并且让该subview在可视区域里面。

在 reload部分。cellForRowAtIndexPath部分。(reload的时候会自动调用cellForRowAtIndexPath)增加 了部分UIScrollView的scroll相关的代码。(UITableView继承自UIScrollView)。发现 cellForRowAtIndexPath被循环调用。

但是怀疑作者 在调用UITableViewCell *cell=[self tableView: tableView cellForRowAtIndexPath: indexPath];  时可能错误的写成 UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];造成了递归。

 

第二个方法:用自适应的label 让cell的高度跟着适应。

 CGSize constraint = 预先设置的宽高;

  CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];

然后在- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 返回这个高度。当然局限性也很强就是必须是cell适应label的高度,要是有些图片了之类的就废了~~

第三种方法:我擦他了~ 还没想出来~

 

 

 

 

 

 

转载于:https://www.cnblogs.com/superhappy/archive/2012/11/07/2759439.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值