我已将 UITableView 放入 UIScrollView 现在我想将静态高度设置为 tabelview 并将 contentSize 设置为ScrollView 因为 UITableView 每次滚动 tableview 时都会调用 cellForRowAtIndexPath 。
我正在使用下面的代码动态设置 tableviewcell 大小。
现在的问题是:如何以及在何处将总高度设置为 tableview 并将内容大小设置为我的 scrollview ?
-(CGFloat)tableViewUITableView *)tableView heightForRowAtIndexPathNSIndexPath *)indexPath
{
NSMutableDictionary *itemDataDic = [resultArray objectAtIndex:indexPath.row];
UIFont *cellFont = [UIFont fontWithName"Helvetica" size:15.0];
CGSize constraintSize = CGSizeMake(275.0f, MAXFLOAT);
CGSize labelSize = [[itemDataDic objectForKey"offer_title"] sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:NSLineBreakByWordWrapping];
if (labelSize.height > 30.00f)
{
totalHeight = totalHeight + 325;
return 325;
}
else
{
totalHeight = totalHeight + 306;
return 306;
}
}
Best Answer-推荐答案 strong>
'heightForRowAtIndexPath'为一个单元格调用了很多次,因此totalHeight计算错误。
您需要在初始化时计算表格的高度以及数据何时更改。
-(void) reloadAndResizeTable
{
CGFloat totalHeight = .0f;
for (NSMutableDictionary* itemDataDic in resultArray) {
UIFont *cellFont = [UIFont fontWithName"Helvetica" size:15.0];
CGSize constraintSize = CGSizeMake(275.0f, MAXFLOAT);
CGSize labelSize = [[itemDataDic objectForKey"offer_title"] sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:NSLineBreakByWordWrapping];
if (labelSize.height > 30.00f)
{
totalHeight = totalHeight + 325.0f;
return 325;
}
else
{
totalHeight = totalHeight + 306.0f;
return 306;
}
}
CGRect frame = [yourTableView frame];
[yourTableView setFrame:CGRectMake(frame.origin.x, frame.origin.y, frame.size.width, totalHeight)];
[yourTableView reloadData];
}
关于ios - 设置包含动态单元格高度的 UITableView 的高度,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/34627490/
|