昨天在项目中发现一个问题,一个列表滚动到底部时,刷新列表,会向上弹一下,百思不得其解,经过一番查询,原因是刷新列表时,tableView会重新计算高度,得到用缓存行高的办法如下:
- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath{
NSString *key = [NSString stringWithFormat:@"%ld",indexPath.row];
NSNumber *heigt = self.cellheightDic[key];
if (heigt == nil) {
heigt = @(100);
}
return heigt.floatValue;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
NSLog(@"heig = %ld",indexPath.row);
NSString *key = [NSString stringWithFormat:@"%ld",indexPath.row];
NSNumber *heigt = self.cellheightDic[key];
if (heigt == nil) {
heigt = @(self.cell.cellHeight);
[self.cellheightDic setValue:heigt forKey:key];
}
return heigt.floatValue;
}
网友评论