我下载了Json数据然后我填充了我的自定义UITableView,问题是即使我根据我下载的元素数量计算tableview的高度,单元格也不适合tableview的整个高度,所以我的最终情况是一个包含n个元素的tableview,其高度为n * 100,但单元格只适合它的一部分。 这是我用来计算高度的代码:
//callback that contains the items I download
-(void)productsDownloaded:(NSArray *)items
{
_productsDetails = items;
CGFloat height = 100;
height *= items.count;
CGRect tableFrame = _customTableView.frame;
tableFrame.size.height = height;
_customTableView.frame = tableFrame;
[_customTableView reloadData];
}
我也尝试过:
_customTableView.alwaysBounceVertical = NO;
_customTableView.scrollEnabled = NO;
但没有结果..我怎样才能告诉细胞符合细胞的高度?
答案 0 :(得分:1)
要实现可滚动的表格视图,您必须使用tableView:heightForRowAtIndexPath:
委托方法来指定大小(高度)或单元格,而不仅仅是更改表格视图的框架。
示例:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
//TODO: Calculate cell height
return 60.0f;
}
要在一个屏幕上显示所有单元格,表格视图单元格的总高度必须等于表格视图的高度,因此一个表格视图单元格的高度应为:
CGFloat cellHeight = CGRectGetHeight(tableView.frame) / numberOfCells;
但是,我真的不明白你为什么要这样做。表格视图的全部原因是为单元格和滚动设置了固定的高度(就像设置应用程序那样)。