1.在model的增加cell height属性可以cellheight 重写get方法里计算cell的高度
@implementation NEPAboutClassModel
-(CGFloat)cellHeight
{
if (_cellHeight == 0.0) {
NSString *descStr = [NSString stringWithFormat:@"备注:%@",self.course.memo];
CGRect rect = [descStr boundingRectWithSize:CGSizeMake(NEP_ScreenWidth, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14]} context:nil];
//文字是一行的状态下 区头加cell == 54 + 211
//在这里计算出tableView的内容大小,主要是计算备注这一栏label的大小
_cellHeight = 265 + rect.size.height - 21;
}
return _cellHeight;
}
@end
tableview在没有给预估高度的时候
- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath 或 _tableView.estimatedRowHeight = 211.0f;
会先走
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
NEPAboutClassModel *acModel = self.model.courseinfo[indexPath.section];
return acModel.cellHeight;
}
然后走
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NEPCourceDetailCell *cell = [tableView dequeueReusableCellWithIdentifier:@"NEPCourceDetailCell"];
if (cell == nil) {
cell = [NEPCourceDetailCell szl_viewFromXib];
}
cell.delegate = self;
NEPAboutClassModel *acModel = self.model.courseinfo[indexPath.section];
cell.model = acModel;
cell.selectionStyle = UITableViewCellSelectionStyleNone;
return cell;
}
2.在model的增加cell height属性可以cellheight 在cell的model属性的set方法里计算
- (void)setModel:(NEPCourceDelModel *)model
{
_model = model;
self.tableViewHeader.dateLb.text = [NSString stringWithFormat:@"%@ %@",model.time,[NSString stringFromPeriod:model.interval]];
self.tableViewHeader.totalLb.text = [NSString stringWithFormat:@"%d个约课邀请",model.countCourse];
[self.tableView reloadData];
//文字是一行的状态下 区头加cell == 54 + 211
//在这里计算出tableView的内容大小,主要是计算备注这一栏label的大小
model.cellHeight = self.tableView.contentSize.height;
}
这时tableview 要加一个预估高度才能保证
先进
- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath
在进
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NEPCourceDetailCell *cell = [tableView dequeueReusableCellWithIdentifier:@"NEPCourceDetailCell"];
if (cell == nil) {
cell = [NEPCourceDetailCell szl_viewFromXib];
}
cell.delegate = self;
NEPAboutClassModel *acModel = self.model.courseinfo[indexPath.section];
cell.model = acModel;
cell.selectionStyle = UITableViewCellSelectionStyleNone;
return cell;
}
再进
- (void)setModel:(NEPCourceDelModel *)model
{
_model = model;
self.tableViewHeader.dateLb.text = [NSString stringWithFormat:@"%@ %@",model.time,[NSString stringFromPeriod:model.interval]];
self.tableViewHeader.totalLb.text = [NSString stringWithFormat:@"%d个约课邀请",model.countCourse];
[self.tableView reloadData];
//文字是一行的状态下 区头加cell == 54 + 211
//在这里计算出tableView的内容大小,主要是计算备注这一栏label的大小
model.cellHeight = self.tableView.contentSize.height;
}
在进
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
NEPAboutClassModel *acModel = self.model.courseinfo[indexPath.section];
return acModel.cellHeight;
}
网友评论