我已将 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;
}
}
'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/
欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://jike.in/) | Powered by Discuz! X3.4 |