IOS学习 IOS7新增估算代理

本文详细解析了iOS7中UITableView在初始化和reloadData时如何通过cell个数调用高度计算方法,以及在遇到变化高度时,使用估计高度方法的工作原理。通过实例演示了如何在不同场景下实现高度的动态调整。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文: http://www.shinobicontrols.com/blog/posts/2013/10/16/ios7-day-by-day-day-19-uitableview-row-height-estimation

英语水平有限,不逐一翻译了,表达的是:

当UITableView在初始化和reloadData时会首先调用cell个数次- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath,因为UITableView需要知道总高度后才能继续描画出内容。

之后会挨次调用

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

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath

如果是固定高度的Cell的这样就可以了。


但是我们经常会遇到变化的高度,这时我们用

- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath

{

return 40;

}

此时,当UITableView再初始化和reloadData时不会调用heightForRowAtIndexPath了,而是调用estimatedHeightForRowAtIndexPath,estimatedHeightForRowAtIndexPath是一个估计值,之后会在挨次调用cellForRowAtIndexPath和heightForRowAtIndexPath时逐一更改。

原版在GitHub上有demo,我自己也写了个测试的,需要的留邮箱吧。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值